Remove tdbc{mysql,odbc,postgres}

We don't use these for anything, and they can be re-added if that
changes.
This commit is contained in:
Joshua Root
2026-04-14 08:19:15 +10:00
parent d54ca2c6a9
commit faf3b851f7
71 changed files with 5 additions and 79209 deletions
+3 -2
View File
@@ -67,8 +67,9 @@ tdbc1.1.3 tdbcmysql1.1.3 tdbcodbc1.1.3 tdbcpostgres1.1.3 \
tdbc1.1.5 tdbcmysql1.1.5 tdbcodbc1.1.5 tdbcpostgres1.1.5 \
tdbc1.1.7 tdbcmysql1.1.7 tdbcodbc1.1.7 tdbcpostgres1.1.7 \
tdbc1.1.9 tdbcmysql1.1.9 tdbcodbc1.1.9 tdbcpostgres1.1.9 \
tdbc1.1.10 tdbcmysql1.1.10 tdbcodbc1.1.10 tdbcpostgres1.1.10\
tdbc1.1.12 tdbcmysql1.1.12 tdbcodbc1.1.12 tdbcpostgres1.1.12"
tdbc1.1.10 tdbcmysql1.1.10 tdbcodbc1.1.10 tdbcpostgres1.1.10 \
tdbc1.1.12 tdbcmysql1.1.12 tdbcodbc1.1.12 tdbcpostgres1.1.12 \
tdbcmysql1.1.13 tdbcodbc1.1.13 tdbcpostgres1.1.13"
# Create config files from defaults if not present
function setup_configs {
Generated Vendored
+2 -1
View File
@@ -139,7 +139,8 @@ OLD_TCL_FILES= $(DESTDIR)$(TCL_PACKAGE_PATH)/tcl8 \
$(DESTDIR)$(TCL_PACKAGE_PATH)/sqlite3.45.3 \
$(DESTDIR)$(TCL_PACKAGE_PATH)/sqlite3.47.2 \
$(DESTDIR)$(TCL_PACKAGE_PATH)/sqlite3.50.4 \
$(DESTDIR)$(TCL_PACKAGE_PATH)/tdbc{,mysql,odbc,postgres}1.1.{3,5,7,9,10,12}
$(DESTDIR)$(TCL_PACKAGE_PATH)/tdbc1.1.{3,5,7,9,10,12} \
$(DESTDIR)$(TCL_PACKAGE_PATH)/tdbc{mysql,odbc,postgres}*
install-tcl:
rm -rf $(OLD_TCL_FILES)
-384
View File
@@ -1,384 +0,0 @@
2014-01-23 Don Porter <dgp@users.sourceforge.net>
* configure.in:
* README: Advanced version number to 1.0.3.
* configure: TEA update; autoconf 2.69
2014-10-23 Don Porter <dgp@users.sourceforge.net>
* configure.in:
* README: Advanced version number to 1.0.2.
* configure: TEA update; autoconf 2.68
* doc/*.n: [TDBC Bug 00b792] OpenBSD friendly docs.
2014-08-14 Don Porter <dgp@users.sourceforge.net>
* configure.in:
* README: Advanced version number to 1.0.1.
* configure autoconf 2.68
2012-11-15 KevinB. Kenny <kennykb@acm.org>
* configure.in: Made change so that `make test` works even
* Makefile.in: against an uninstalled version of tdbc.
* configure: autoconf 2.68
*** ADVANCED THE VERSION OF AUTOCONF IN USE ***
2012-11-08 Don Porter <dgp@users.sourceforge.net>
* configure.in:
* README: Advanced version number to 1.0.0.
* configure: autoconf 2.59
2012-07-26 Jan Nijtmans <jan.nijtmans@gmail.com>
* generic/mysqlStubInit.c: Fix [14a8b7c3bd]: package tdbc::mysql fails
to load under Fedora 17. Make some tables "const".
* tclconfig/install-sh: Update to latest TEA
* tclconfig/tcl.m4
* configure: autoconf-2.59
2012-07-13 Kevin B. Kenny <kennykb@acm.org>
* test/tdbcmysql.test: Make functional tests refuse to run unless
the environment variable TDBCMYSQL_TEST_DB
explicitly designates a database.
2012-07-10 Kevin B. Kenny <kennykb@acm.org>
* generic/tdbcmysql.c: Fixed a non-static table argument to
Tcl_GetIndexFromObjStruct.
2012-06-10 Jan Nijtmans <jan.nijtmans@gmail.com>
* configure.in: make TDBC API functions MODULE_SCOPE
* configure: autoconf-2.59
2012-06-08 Jan Nijtmans <jan.nijtmans@gmail.com>
* tclconfig/tcl.m4: Update to latest TEA
* configure: autoconf-2.59
2011-09-19 Kevin B. Kenny <kennykb@acm.org>
* Makefie.in: Added a 'valgrind' rule for memory leak checking.
* tests/all.tcl: Changed behaviour to 'fall off the end' to
facilitate 'valgrind.
2011-07-19 Kevin B. Kenny <kennykb@acm.org>
* configure.in:
* Makefile.in:
* README: Advanced version number to 1.0b17.
* configure: autoconf 2.59
2011-07-18 Don Porter <dgp@users.sourceforge.net>
* configure.in: Update to latest TEA 3.9 revisions.
* Makefile.in:
* tclconfig/*:
* configure: autoconf-2.59
2011-02-20 Kevin B. Kenny <kennykb@acm.org>
* tests/tdbcmysql.test:
Added rudimentary test for 'nextresults' - the method
is a dummy because the calls supported by tdbc::mysql
do not allow for multiple result sets.
2011-01-26 Kevin B. Kenny <kennykb@acm.org>
* doc/tdbc_mysql.n:
Added empty comment at the start of each manpage because 'man'
interprets comments there as directives. Thanks to Konstantin
Kohmoutov for reporting and diagnosing this error.
2011-01-25 Kevin B. Kenny <kennykb@acm.org>
* generic/tdbcmysql.c: Fixed a bug in data types of small integers
on 64-bit machines. Who would have imagined
that MSYQL_TYPE_LONG doesn't mean 'long' but
rather 'int'?
* tests/tdbcmysql.test (tdbc::mysql-1.6,24.[4567]):
Quieted test cases on 64-bit machines and on MySQL earlier
than 5.1.16, which is the first version on which
'foreignkeys' functions correctly.
Thanks to Damon Courtney for reporting these bugs.
2010-12-28 Kevin B. Kenny <kennykb@acm.org>
* generic/fakemysql.h: Added the MYSQL data structure and the
nest of other definitions that it depends on.
* generic/mysqlStubDefs.txt: Added mysql_affected_rows and
mysql_field_count.
* generic/mysqlStubInit.c, generic/mysqlStubs.h: Regenerated.
* generic/tdbcmysql.c: Added 'evaldirect' method that allows
executing statements that are unimplemented
in the MySQL prepared statement API.
* generic/tdbcmysql.tcl: Did a rough (not really functional) hack
at formatting prepared statements.
* tests/tdbcmysql.test (tdbc::mysql-25.*): Added two tests for
creating a (parameterless) stored procedure and executing it.
2010-09-03 Kevin B. Kenny <kennykb@acm.org>
* configure.in: Added missing TCLOO_CFLAGS because Windows build
failed to link without it.
* configure: autoconf 2-59
* generic/mysqlStubInit.c:
Made changes to attempt to open the
MySQL client library by SONAME as well as
pathname, in an effort to fit in better
with systems where libmysqlclient-devel
is not installed.
* library/tdbcmysql.tcl:
* tests/tdbcmysql.test:
Changed 'keySequence' to 'ordinalPosition' in
'foreignkeys' for consistency with 'primarykeys'.
* configure.in:
* Makefile.in:
* pkgIndex.tcl.in (new file):
* README:
* tclconfig/: Upgraded the build to use TEA 3.9. Changed the
approach to pkgIndex.tcl generation. (It's now built
at configure time, rather than from the Makefile.)
Advanced version number to 1.0b16.
* configure: autoconf 2.59
2010-06-19 Kevin B. Kenny <kennykb@acm.org>
* Makefile.in: Revised the code at the suggestion
* generic/tdbcmysql.c: of Andreas Kupries to avoid using
* tests/all.tcl: 'tcl_findLibrary' and instead execute
* tests/tdbcmysql.test: both 'source' and 'load' commands from
'pkgIndex.tcl'. Revised the 'make test'
rule, and the test scripts, to
test successfully under the new regime.
Thanks to Andreas for providing the
original patch, and to Joe English
for providing ideas for simplifying
and repairing 'make test' under the
new regime.
2010-05-23 Kevin B. Kenny <kennykb@acm.org>
* library/tdbcmysql.tcl: Added a 'BuildForeignKeysStatement' method
to tdbcmysql::connection that overrides the
one in the base class and accommodates the
nonstandard INFORMATION_SCHEMA provided in
MySQL.
* tests/tdbcmysql.test: Added test cases for '$db primarykeys'
and '$db foreignkeys'
2010-05-12 Kevin B. Kenny <kennykb@acm.org>
* generic/fakesql.h:
Added dual definitions of data structures that change
between MySQL 5.0 and 5.1.
* generic/mysqlStubDefs.h:
Added code to link to mysqlclient_r and mysqlclient
as well as mysql so that client libs can be found
on Unix. Added query of the client lib version.
* generic/mysqlStubInit.c:
Regenerate
* generic/mysqlStubs.h:
Regenerate
* generic/tdbcmysql.c:
Modified to make MYSQL_BIND and MYSQL_FIELD accesses
go through accessor functions that hit the correct
versions of the structures according to the client
library version. (Tcl can provide ABI stability,
even if MySQL can't!)
* configure.in: Advance release to 1.0b15.1
* README: Advance release to 1.0b15.1
* configure: autoconf-2.59
2010-05-10 Kevin B. Kenny <kennykb@acm.org>
* aclocal.m4: Synchronize with tdbc.
* configure.in: Advance TEA version to 3.7. Advance release to 1.0b15.
Corrected the TDBC stub library specification so that
it works under MSVC.
* generic/mysqlStubDefs.txt:
Split out the linkage convention so that
genExtStubs.tcl can generate syntactically correct
VC++ pointer-to-function declarations.
* generic/mysqlStubInit.c:
* generic/mysqlStubs.h:
Regenerate
* generic/tdbcmysql.c:
Added code to silence VC++ warnings.
* README: Advance release to 1.0b15
* tclconfig/: Advance to TEA 3.7
* configure: autoconf-2.59
2010-05-10 Andreas Kupries <andreask@activestate.com>
* generic/tdbcmysql.c: Fixed violations of strict C89.
* Makefile.in: Removed attempt to generate a stub library. Drivers
do not export stub tables.
2010-05-07 Andreas Kupries <andreask@activestate.com>
* configure.in: Disabled TEA_*_TKCONFIG. Code doesn't depend on Tk.
* configure: Regenerated.
2010-04-30 Kevin B. Kenny <kennykb@acm.org>
* Makefile.in: Added explicit reference to the TDBC library in the
TCLSH_ENV. Updated the 'dist' rule to include new files.
Added a 'genstubs' rule to make the stubs to load
the MySQL libraries at run time.
* configure.in: Removed compile-time references to the MySQL headers
and libraries. Added new files to SOURCES and HEADERS.
* generic/fakemysql.h (new file):
Minimal subset of mysql.h needed to make tdbc::mysql compile.
* generic/mysqlStubDefs.txt (new file):
Definitions of MySQL runtime library routines brought
in by dynamic loading.
* generic/mysqlStubInit.c (new file):
Code to load the MySQL runtime library and build a stub
table for it.
* generic/mysqlStubDefs.txt (new file):
Definitions of the routines to be resolved when loading
the MySQL library at run time.
* generic/tdbcmysql.c:
Changed tdbc::mysql to load the MySQL library at run time
and to have no compile-time dependencies on MySQL.
* tests/tdbcodbc.test (tdbc::mysql-14.8):
Corrected a misnamed test.
2010-04-25 Kevin B. Kenny <kennykb@acm.org>
* configure.in: Adjusted TDBC_* environment vars to be tdbc_*
* README: for better TEA compatibility. Advanced version number
to 1.0b14.
* configure: autoconf-2.59
2009-09-29 Kevin B. Kenny <kennykb@acm.org>
* tests/tdbcmysql.test: Changed all TEST_* environment variables
to TDBCMYSQL_* for easier high-level scripting
of the tests.
2009-09-20 Kevin B. Kenny <kennykb@acm.org>
* README:
* configure.in: Advance version number to 1.0b13
* configure: autoconf-2.59
2009-07-03 Kevin B. Kenny <kennykb@acm.org>
* README:
* configure.in: Advance version number to 1.0b12
* configure: autoconf-2.59
2009-05-29 Kevin B. Kenny <kennykb@acm.org>
* README:
* configure.in: Advance version number to 1.0b11
* configure: autoconf-2.59
2009-04-19 Kevin B. Kenny <kennykb@acm.org>
* generic/tdbcmysql.c: Silenced a compiler warning about 'fields'
being used uninitialized.
* doc/tdbc_mysql.n: Added missing documentation for 'new' constructors.
2009-04-18 Kevin B. Kenny <kennykb@acm.org>
* generic/tdbcmysql.c: Changed so that an inappropriate access to
an array or a failing read trace yields NULL.
* tests/tdbcmysql.test: Revised test cases according to the above
change.
* doc/tdbc_mysql.n: Made changes so that NROFF formatting matches
the Tcl standard.
2009-04-16 Kevin B. Kenny <kennykb@acm.org>
* README:
* configure.in: Advance version number to 1.0b10
* configure: autoconf-2.59
* generic/tdbcmysql.c: Reworked the allocation of result buffers
so that they belong to the result set and
are not allocated per row. Pushed binding the
results up before mysql_stmt_execute,
avoiding a crash if the same statement handle
has been used before [Ticket 39a78606aa].
No update made to test suite because
valgrind detected the error with existing
tests on a -DPURIFY build.
2009-03-03 Kevin B. Kenny <kennykb@acm.org>
* generic/tdbcmysql.c:
* library/tdbcmysql.tcl: Replaced 'init' methods with constructors
written in C. Added 'statementCreate' and 'resultSetCreate' forwarding
in place of the 'statementClass' and 'resultSetClass' variables.
Removed some classes that were the result of overeager copying
from tclodbc. Replaced 'my variable' with variables declared at
class level.
2009-02-14 Kevin B. Kenny <kennykb@acm.org>
* doc/tdbc_mysql.n: Many small format changes to make 'man2html'
work.
* README:
* configure.in: Advance version number to 1.0b8
* configure: autoconf-2.59
2009-02-01 Kevin B. Kenny <kennykb@acm.org>
* generic/tdbcmysql.c:
* configure.in: Changed the <my_global.h> tests to use the
correct conditionals on mingw.
* configure: Autoconf 2.59
2009-01-31 Kevin B. Kenny <kennykb@acm.org>
* README:
* configure.in: Advanced version to 1.0b7.
* configure: Regenerated.
* generic/tdbcmysql.c: Revised errorCode generation to be
more [try]-friendly. Changed include to <mysql/mysql.h> so that
the include path isn't necessary.
* tests/tdbcmysql.test: Added test flags so that a nonstandard port
or socket can be specified. Changed errorCode-dependent tests to
look for the new form of errorCode.
2009-01-05 Kevin B. Kenny <kennykb@acm.org>
* README: Added a few more hints for building on Windows.
* configure.in: Changes to make tdbcmysql build on Windows.
* generic/tdbcmysql.c: Changed to #include <my_global.h> on Windows.
Advanced release to 1.0b6
* configure: autoconf 2.59
2009-01-04 Kevin B. Kenny <kennykb@acm.org>
* README:
* Makefile.in:
* doc/tdbc_mysql.n: Updated so that files are no longer clones
of the 'tdbcodbc' package. Added installation and distribution code.
* configure.in: Advanced version to 1.0b5
* generic/tdbcmysql.c: Added code to track the declared data types
of parameters and the actual data types of results. Added code to
do direct binary conversions of integers, floating point numbers,
and bit strings. Added checks for binary data on results.
Added disambiguation of duplicated colmn names.
* tests/tdbcmysql.test: Revised test cases to include all the
MySQL data types handled in this driver. Added a test case that
column names are correctly disambiguated.
* configure: autoconf 2.59
2009-01-02 Kevin B. Kenny <kennykb@acm.org>
Initial baseline of a TDBC driver for MySQL.
File diff suppressed because it is too large Load Diff
-80
View File
@@ -1,80 +0,0 @@
README: tdbcmysql
This is the 1.1.13 source distribution of the driver for Tcl
Database Connectivity (TDBC) to access MySQL databases.. TDBC and
its drivers are available from a Fossil version control repository
at http://tdbc.tcl.tk/
RCS: @(#) $Id: $
1. Introduction
This directory contains the source code, documentation, and test
scripts for the MySQL driver for Tcl Database Connectivity. This
module, plus TDBC itself, allow you to access MySQL databases using a
standard application programming interface (API) from a Tcl script.
This module is also available from http://tdbc.tcl.tk along with the
source code of TDBC itself. A bug database and Wiki are available at
the same location.
Tdbc::mysql is a freely-available open source package. You can do
virtually anything you like with it, such as modifying it,
redistributing it, and selling it either in whole or in part. See the
file "license.terms" for complete information.
2. Compilation and Installation
This module follows the general configuration and installation
rules described in the README file for tdbc. In addition to the
options described there, the 'configure' script for tdbcmysql
accepts the following two options:
--with-mysql-includedir=PATH
Specifies PATH as the path to the directory that contains
'mysql.h' and related header files.
--with-mysql-libdir=PATH
Specifies PATH as the path to the directory that contains
the MySQL link libraries.
Building on Windows is tested only with msys/mingw, and only with
the version of MySQL present in XAMPP (https://sourceforge.net/projects/xampp)
You need the 'xampp-win32-devel' package as well as the 'xampp-win32'
package.
In order to build the code under msys/mingw, you need to rebuild the
import library for use by mingw. (This also requires the 'reimp'
utility from mingw-utils.) The recipe for this step is:
reimp -d drive:/path/to/xampp/lib/mysql/libmysql.lib
dlltool -k -d libmysql.def -l libmysql.a
cp libmysql.a drive:/path/to/mingw/lib
It is also convenient to make sure that the MySQL headers are available
without the --with option:
cp -r drive:/path/to/xampp/include/mysql/* drive:/path/to/mingw/include/
Then an ordinary 'configure' and 'make' should function to build the
load module.
NOTE THAT ON WINDOWS, THE 'libmysql.dll' LIBRARY MUST BE ON THE PATH
AT RUNTIME. Probably the easiest way to ensure this happens is to
put it either in the Windows 'system32' directory or the 'bin'
directory of your Tcl distribution.
3. Documentation
The 'doc' subdirectory in this release contains a set of reference
manual entries for tdbc::mysql. Files with an extension '.n' are for
Tcl classes and commands; files with an extension '.3' are for C
library functions. The file, 'doc/tdbcmysql.n' gives an overview,
listing the classes and functions
4. See also
More information about TDBC and its drivers are available in the
README file for TDBC itself; refer to that file for compilation and
installation instructions, and support information.
-86
View File
@@ -1,86 +0,0 @@
#
# Include the TEA standard macro set
#
builtin(include,tclconfig/tcl.m4)
#
# Add here whatever m4 macros you want to define for your package
#
dnl Helper macros
AC_DEFUN([TEAX_LAPPEND], [$1="[$]{$1} $2"])
AC_DEFUN([TEAX_FOREACH], [for $1 in $2; do $3; done])
AC_DEFUN([TEAX_IFEQ], [AS_IF([test "x$1" = "x$2"], [$3])])
AC_DEFUN([TEAX_IFNEQ], [AS_IF([test "x$1" != "x$2"], [$3])])
AC_DEFUN([TEAX_SWITCH], [case "$1" in TEAX_SWITCH_Cases(m4_shift($@)) esac])
AC_DEFUN([TEAX_SWITCH_Cases], [m4_if([$#],0,,[$#],1,,[TEAX_SWITCH_OneCase($1,$2)TEAX_SWITCH_Cases(m4_shift(m4_shift($@)))])])
AC_DEFUN([TEAX_SWITCH_OneCase],[ $1) $2;;])
AC_DEFUN([CygPath],[`${CYGPATH} $1`])
dnl Interesting macros
AC_DEFUN([TEAX_SUBST_RESOURCE], [
AC_REQUIRE([TEA_CONFIG_CFLAGS])dnl
TEAX_IFEQ($TEA_PLATFORM, windows, [
AC_CHECK_PROGS(RC_, 'windres -o' 'rc -nologo -fo', none)
TEAX_SWITCH($RC_,
windres*, [
rcdef_inc="--include "
rcdef_start="--define "
rcdef_q='\"'
AC_SUBST(RES_SUFFIX, [res.o])
TEAX_LAPPEND(PKG_OBJECTS, ${PACKAGE_NAME}.res.o)],
rc*, [
rcdef_inc="-i "
rcdef_start="-d "
rcdef_q='"'
AC_SUBST(RES_SUFFIX, [res])
TEAX_LAPPEND(PKG_OBJECTS, ${PACKAGE_NAME}.res)],
*, [
AC_MSG_WARN([could not find resource compiler])
RC_=: ])])
# This next line is because of the brokenness of TEA...
AC_SUBST(RC, $RC_)
TEAX_FOREACH(i, $1, [
TEAX_LAPPEND(RES_DEFS, ${rcdef_inc}\"CygPath($i)\")])
TEAX_FOREACH(i, $2, [
TEAX_LAPPEND(RES_DEFS, ${rcdef_start}$i='${rcdef_q}\$($i)${rcdef_q}')])
AC_SUBST(RES_DEFS)])
AC_DEFUN([TEAX_ADD_PRIVATE_HEADERS], [
TEAX_FOREACH(i, $@, [
# check for existence, be strict because it should be present!
AS_IF([test ! -f "${srcdir}/$i"], [
AC_MSG_ERROR([could not find header file '${srcdir}/$i'])])
TEAX_LAPPEND(PKG_PRIVATE_HEADERS, $i)])
AC_SUBST(PKG_PRIVATE_HEADERS)])
AC_DEFUN([TEAX_SDX], [
AC_PATH_PROG(SDX, sdx, none)
TEAX_IFEQ($SDX, none, [
AC_PATH_PROG(SDX_KIT, sdx.kit, none)
TEAX_IFNEQ($SDX_KIT, none, [
# We assume that sdx.kit is on the path, and that the default
# tclsh is activetcl
SDX="tclsh '${SDX_KIT}'"])])
TEAX_IFEQ($SDX, none, [
AC_MSG_WARN([cannot find sdx; building starkits will fail])
AC_MSG_NOTICE([building as a normal library still supported])])])
dnl TODO: Adapt this for OSX Frameworks...
dnl This next bit is a bit ugly, but it makes things for tclooConfig.sh...
AC_DEFUN([TEAX_PATH_LINE], [
eval "$1=\"[]CygPath($2)\""
AC_SUBST($1)])
AC_DEFUN([TEAX_INCLUDE_LINE], [
eval "$1=\"-I[]CygPath($2)\""
AC_SUBST($1)])
AC_DEFUN([TEAX_LINK_LINE], [
AS_IF([test ${TCL_LIB_VERSIONS_OK} = nodots], [
eval "$1=\"-L[]CygPath($2) -l$3${TCL_TRIM_DOTS}\""
], [
eval "$1=\"-L[]CygPath($2) -l$3${PACKAGE_VERSION}\""
])
AC_SUBST($1)])
dnl Local Variables:
dnl mode: autoconf
dnl End:
File diff suppressed because it is too large Load Diff
-239
View File
@@ -1,239 +0,0 @@
#!/bin/bash -norc
dnl This file is an input file used by the GNU "autoconf" program to
dnl generate the file "configure", which is run during Tcl installation
dnl to configure the system for the local environment.
#-----------------------------------------------------------------------
# Sample configure.ac for Tcl Extensions. The only places you should
# need to modify this file are marked by the string __CHANGE__
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
# __CHANGE__
# Set your package name and version numbers here.
#
# This initializes the environment with PACKAGE_NAME and PACKAGE_VERSION
# set as provided. These will also be added as -D defs in your Makefile
# so you can encode the package version directly into the source files.
# This will also define a special symbol for Windows (BUILD_<PACKAGE_NAME>
# so that we create the export library with the dll.
#-----------------------------------------------------------------------
AC_INIT([tdbcmysql],[1.1.13])
#--------------------------------------------------------------------
# Call TEA_INIT as the first TEA_ macro to set up initial vars.
# This will define a ${TEA_PLATFORM} variable == "unix" or "windows"
# as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE.
#--------------------------------------------------------------------
TEA_INIT()
AC_CONFIG_AUX_DIR(tclconfig)
#--------------------------------------------------------------------
# Load the tclConfig.sh file
#--------------------------------------------------------------------
TEA_PATH_TCLCONFIG
TEA_LOAD_TCLCONFIG
#--------------------------------------------------------------------
# Load the tkConfig.sh file if necessary (Tk extension)
#--------------------------------------------------------------------
#TEA_PATH_TKCONFIG
#TEA_LOAD_TKCONFIG
#--------------------------------------------------------------------
# Load the tclooConfig.sh file on Tcl versions where oo is an
# extension.
#--------------------------------------------------------------------
if test "${TCL_MAJOR_VERSION}" -lt 8 ; then
AC_MSG_ERROR([${PACKAGE_NAME} ${PACKAGE_VERSION} requires Tcl 8.6 or newer.
Found configuration for Tcl ${TCL_VERSION}.])
fi
if test "${TCL_MAJOR_VERSION}" -eq 8 ; then
if test "${TCL_MINOR_VERSION}" -lt 6 ; then
AC_MSG_ERROR([${PACKAGE_NAME} ${PACKAGE_VERSION} requires Tcl 8.6 or newer.
Found configuration for Tcl ${TCL_VERSION}.])
fi
TCLOO_CFLAGS=''
fi
TCL_VERSION_REQ=8.6; AC_SUBST(TCL_VERSION_REQ)
TEA_PATH_CONFIG(tdbc)
TEA_LOAD_CONFIG(tdbc)
# The next bit probably ought to be in TEA_LOAD_CONFIG
AC_MSG_WARN([Looking for "${tdbc_BIN_DIR}/Makefile"])
if test -f "${tdbc_BIN_DIR}/Makefile" ; then
AC_MSG_WARN([Found Makefile - using build include spec and lib specs for tdbc])
tdbc_INCLUDE_SPEC=${tdbc_BUILD_INCLUDE_SPEC}
tdbc_LIBRARY_PATH=${tdbc_BUILD_LIBRARY_PATH}
fi
AC_SUBST(tdbc_LIBRARY_PATH)
AC_SUBST(TDBC_VERSION)
AC_SUBST(tdbc_SRC_DIR)
AC_SUBST(tdbc_BIN_DIR)
AC_SUBST(TDBC_LIB_FILE)
#-----------------------------------------------------------------------
# Handle the --prefix=... option by defaulting to what Tcl gave.
# Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER.
#-----------------------------------------------------------------------
TEA_PREFIX
#-----------------------------------------------------------------------
# Standard compiler checks.
# This sets up CC by using the CC env var, or looks for gcc otherwise.
# This also calls AC_PROG_CC and a few others to create the basic setup
# necessary to compile executables.
#-----------------------------------------------------------------------
TEA_SETUP_COMPILER
#-----------------------------------------------------------------------
# Setup inlining if available. Check sizeof long long, long.
#-----------------------------------------------------------------------
AC_C_INLINE
AC_CHECK_TYPE([long long],[
AC_DEFINE([HAVE_LONG_LONG],[1])
AC_CHECK_SIZEOF([long long])
],[],[])
AC_CHECK_SIZEOF([long])
#-----------------------------------------------------------------------
# __CHANGE__
# Specify the C source files to compile in TEA_ADD_SOURCES,
# public headers that need to be installed in TEA_ADD_HEADERS,
# stub library C source files to compile in TEA_ADD_STUB_SOURCES,
# and runtime Tcl library files in TEA_ADD_TCL_SOURCES.
# This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS
# and PKG_TCL_SOURCES.
#-----------------------------------------------------------------------
TEA_ADD_SOURCES(generic/tdbcmysql.c generic/mysqlStubInit.c)
TEA_ADD_HEADERS(generic/fakemysql.h generic/mysqlStubs.h)
if test "${TCL_MAJOR_VERSION}" -eq 8 ; then
if test "${TCL_MINOR_VERSION}" -eq 5 ; then
TEA_ADD_INCLUDES([${TCLOO_INCLUDE_SPEC}])
TEA_ADD_LIBS([${TCLOO_STUB_LIB_SPEC}])
fi
fi
TEA_ADD_CFLAGS([${TCLOO_CFLAGS}])
TEA_ADD_INCLUDES([${tdbc_INCLUDE_SPEC}])
if test "x${TEA_PLATFORM}" = "xwindows" -a "x${GCC}" != "xyes" ; then
TEA_ADD_LIBS([\"`${CYGPATH} ${tdbc_STUB_LIB_PATH}`\"])
else
TEA_ADD_LIBS([${tdbc_STUB_LIB_SPEC}])
fi
TEA_ADD_CFLAGS([${tdbc_CFLAGS}])
TEA_ADD_STUB_SOURCES()
TEA_ADD_TCL_SOURCES([library/tdbcmysql.tcl])
#--------------------------------------------------------------------
# __CHANGE__
#
# You can add more files to clean if your extension creates any extra
# files by extending CLEANFILES.
# Add pkgIndex.tcl if it is generated in the Makefile instead of ./configure
# and change Makefile.in to move it from CONFIG_CLEAN_FILES to BINARIES var.
#
# A few miscellaneous platform-specific items:
# TEA_ADD_* any platform specific compiler/build info here.
#--------------------------------------------------------------------
#CLEANFILES="$CLEANFILES pkgIndex.tcl"
if test "${TEA_PLATFORM}" = "windows" ; then
# Ensure no empty if clauses
:
#TEA_ADD_SOURCES([win/winFile.c])
#TEA_ADD_INCLUDES([-I\"$(${CYGPATH} ${srcdir}/win)\"])
else
# Ensure no empty else clauses
:
#TEA_ADD_SOURCES([unix/unixFile.c])
#TEA_ADD_LIBS([-lsuperfly])
fi
#--------------------------------------------------------------------
# __CHANGE__
# Choose which headers you need. Extension authors should try very
# hard to only rely on the Tcl public header files. Internal headers
# contain private data structures and are subject to change without
# notice.
# This MUST be called after TEA_LOAD_TCLCONFIG / TEA_LOAD_TKCONFIG
#--------------------------------------------------------------------
TEA_PUBLIC_TCL_HEADERS
#TEA_PRIVATE_TCL_HEADERS
#TEA_PUBLIC_TK_HEADERS
#TEA_PRIVATE_TK_HEADERS
#TEA_PATH_X
#--------------------------------------------------------------------
# Check whether --enable-threads or --disable-threads was given.
# This auto-enables if Tcl was compiled threaded.
#--------------------------------------------------------------------
TEA_ENABLE_THREADS
#--------------------------------------------------------------------
# The statement below defines a collection of symbols related to
# building as a shared library instead of a static library.
#--------------------------------------------------------------------
TEA_ENABLE_SHARED
#--------------------------------------------------------------------
# This macro figures out what flags to use with the compiler/linker
# when building shared/static debug/optimized objects. This information
# can be taken from the tclConfig.sh file, but this figures it all out.
#--------------------------------------------------------------------
TEA_CONFIG_CFLAGS
#--------------------------------------------------------------------
# Set the default compiler switches based on the --enable-symbols option.
#--------------------------------------------------------------------
TEA_ENABLE_SYMBOLS
#--------------------------------------------------------------------
# Integer pointer types used by the (U)INT2PTR / PTR2(U)INT macros.
#--------------------------------------------------------------------
AC_TYPE_INTPTR_T
AC_TYPE_UINTPTR_T
#--------------------------------------------------------------------
# This macro generates a line to use when building a library. It
# depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS,
# and TEA_LOAD_TCLCONFIG macros above.
#--------------------------------------------------------------------
TEA_MAKE_LIB
#--------------------------------------------------------------------
# Determine the name of the tclsh and/or wish executables in the
# Tcl and Tk build directories or the location they were installed
# into. These paths are used to support running test cases only,
# the Makefile should not be making use of these paths to generate
# a pkgIndex.tcl file or anything else at extension build time.
#--------------------------------------------------------------------
TEA_PROG_TCLSH
#TEA_PROG_WISH
#--------------------------------------------------------------------
# Finally, substitute all of the various values into the Makefile.
# You may alternatively have a special pkgIndex.tcl.in or other files
# which require substituting the AC variables in. Include these here.
#--------------------------------------------------------------------
AC_CONFIG_FILES([Makefile pkgIndex.tcl])
AC_OUTPUT
-175
View File
@@ -1,175 +0,0 @@
'\"
.\" tdbc_mysql.n --
.\"
.\" 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.
.TH "tdbc::mysql" n 8.6 Tcl "Tcl Database Connectivity"
.\" .so man.macros
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
.\" # BS - start boxed text
.\" # ^y = starting y location
.\" # ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
.\" # BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
.\" Draw four-sided box normally, but don't draw top of
.\" box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
.\" # CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
.\" # CE - end code excerpt
.de CE
.fi
.RE
..
.BS
.SH "NAME"
tdbc::mysql \- TDBC-MYSQL bridge
.SH "SYNOPSIS"
package require \fBtdbc::mysql 1.0\fR
.sp
\fBtdbc::mysql::connection create\fR \fIdb\fR ?\fI-option value...\fR?
.br
\fBtdbc::mysql::connection new\fR ?\fI-option value...\fR?
.sp
\fBtdbc::mysql::datasources\fR ?\fB-system\fR|\fB-user\fR?
.sp
\fBtdbc::mysql::drivers\fR
.sp
\fBtdbc::mysql::datasource\fR \fIcommand\fR \fIdriverName\fR ?\fIkeyword\fR-\fIvalue\fR?...
.BE
.SH "DESCRIPTION"
.PP
The \fBtdbc::mysql\fR driver provides a database interface that conforms
to Tcl DataBase Connectivity (TDBC) and allows a Tcl script to connect
to a MySQL database.
.PP
Connection to an MYSQL database is established by invoking
\fBtdbc::mysql::connection create\fR, passing it the name to give the
database handle and a set of \fI-option-value\fR pairs. The available
options are enumerated under CONNECTION OPTIONS below.
As an alternative, \fBtdbc::mysql::connection new\fR may be used to create
a database connection with an automatically assigned name. The return value
from \fBtdbc::mysql::connection new\fR is the name that was chosen for the
connection handle.
.PP
The side effect of \fBtdbc::mysql::connection create\fR is to create a
new database connection.. See \fBtdbc::connection(n)\fR for the
details of how to use the connection to manipulate a database.
.SH "CONNECTION OPTIONS"
.PP
The \fBtdbc::mysql::connection create\fR object command supports the
\fB-encoding\fR, \fB-isolation\fR, \fB-readonly\fR and \fB-timeout\fR
options common to all TDBC drivers. The \fB-encoding\fR option will
always fail unless the encoding is \fButf-8\fR; the database connection
always uses UTF-8 encoding to be able to transfer arbitrary Unicode
characters. The \fB-readonly\fR option must be \fB0\fR, because
MySQL does not offer read-only connections.
.PP
In addition, the following options are recognized:
.IP "\fB-host\fR \fIhostname\fR"
Connects to the host specified by \fIhostname\fR. This option must be
set on the initial creation of the connection; it cannot be changed
after connecting. Default is to connect to the local host.
.IP "\fB-port\fR \fInumber\fR"
Connects to a MySQL server listening on the port specified by \fInumber\fR.
This option may not be changed after connecting. It is used only when
\fIhost\fR is specified and is not \fBlocalhost\fR.
.IP "\fB-socket\fR \fIpath\fR"
Connects to a MySQL server listening on the Unix socket or named
pipe specified by \fIpath\fR . This option may not be changed after connecting.
It is used only when \fI-host\fR is not specified or is \fBlocalhost\fR.
.IP "\fB-user\fR \fIname\fR"
Presents \fIname\fR as the user name to the MySQL server. Default is the
current user ID.
.IP "\fB-passwd\fR \fIpassword\fR"
.IP "\fB-password\fR \fIpassword\fR"
These two options are synonymous. They present the given \fIpassword\fR as
the user's password to the MySQL server. Default is not to present a password.
.IP "\fB-database\fR \fIname\fR"
.IP "\fB-db\fR \fIname\fR"
These two options are synonymous. They present the given \fIname\fR as the
name of the default database to use in MySQL queries. If not specified,
the default database for the current user is used.
.IP "\fB-interactive\fR \fIflag\fR"
The \fIflag\fR value must be a Boolean value. If it is \fBtrue\fR (or
any equivalent), the default timeout is set for an interactive user,
otherwise, the default timeout is set for a batch user. This option
is meaningful only on initial connection. When using the \fBconfigure\fR
method on a MySQL connection use the \fB-timeout\fR option to set the
timeout desired.
.IP \fB-ssl_ca\fR \fIstring\fR
.IP \fB-ssl_capath\fR \fIstring\fR
.IP \fB-ssl_cert\fR \fIstring\fR
.IP \fB-ssl_cipher\fR \fIstring\fR
.IP \fB-ssl_key\fR \fIstring\fR
These five options set the certificate authority, certificate authority
search path, SSL certificate, transfer cipher, and SSL key to the
given \fIstring\fR arguments. These options may be specified only
on initial connection to a database, not in the \fBconfigure\fR method
of an existing connection. Default is not to use SSL.
.SH EXAMPLES
.PP
.CS
tdbc::mysql::connection -user joe -passwd sesame -db joes_database
.CE
Connects to the MySQL server on the local host using the default
connection method, presenting user ID 'joe' and password 'sesame'.
Uses 'joes_database' as the default database name.
.SH "ADDITIONAL CONNECTION METHODS"
In addition to the usual methods on the tdbc::connection(n) object,
connections to a MySQL database support one additional method:
.IP "\fI$connection\fR \fBevaldirect\fR \fIsqlStatement\fR"
This method takes the given \fIsqlStatement\fR and interprets as
MySQL native SQL code and evaluates it without preparing it. The
statement may not contain variable substitutions. The result set
is returned as a list of lists, with each sublist being the list
of columns of a result row formatted as character strings. Note that
the string formatting is done by MySQL and not by Tcl, so details
like the appearance of floating point numbers may differ.
\fIThis command is not recommended\fR for anything where the usual
\fIprepare\fR or \fIpreparecall\fR methods work correctly. It is
provided so that data management language statements that are
not implemented in MySQL's prepared statement API, such as
\fBCREATE DATABASE\fR or \fBCREATE PROCEDURE\fR, can be executed.
.SH "SEE ALSO"
tdbc(n), tdbc::connection(n), tdbc::resultset(n), tdbc::statement(n)
.SH "KEYWORDS"
TDBC, SQL, MySQL, database, connectivity, connection
.SH "COPYRIGHT"
Copyright (c) 2009 by Kevin B. Kenny.
.\" Local Variables:
.\" mode: nroff
.\" End:
.\"
-335
View File
@@ -1,335 +0,0 @@
/*
* fakemysql.h --
*
* Fake definitions of the MySQL API sufficient to build tdbc::mysql
* without having an MySQL installation on the build system. This file
* comprises only data type, constant and function definitions.
*
* The programmers of this file believe that it contains material not
* subject to copyright under the doctrines of scenes a faire and
* of merger of idea and expression. Accordingly, this file is in the
* public domain.
*
*-----------------------------------------------------------------------------
*/
#ifndef FAKEMYSQL_H_INCLUDED
#define FAKEMYSQL_H_INCLUDED
#include <stddef.h>
#ifndef MODULE_SCOPE
#define MODULE_SCOPE extern
#endif
MODULE_SCOPE Tcl_LoadHandle MysqlInitStubs(Tcl_Interp*);
#ifdef _WIN32
#define STDCALL __stdcall
#else
#define STDCALL /* nothing */
#endif
enum enum_field_types {
MYSQL_TYPE_DECIMAL=0,
MYSQL_TYPE_TINY=1,
MYSQL_TYPE_SHORT=2,
MYSQL_TYPE_LONG=3,
MYSQL_TYPE_FLOAT=4,
MYSQL_TYPE_DOUBLE=5,
MYSQL_TYPE_NULL=6,
MYSQL_TYPE_TIMESTAMP=7,
MYSQL_TYPE_LONGLONG=8,
MYSQL_TYPE_INT24=9,
MYSQL_TYPE_DATE=10,
MYSQL_TYPE_TIME=11,
MYSQL_TYPE_DATETIME=12,
MYSQL_TYPE_YEAR=13,
MYSQL_TYPE_NEWDATE=14,
MYSQL_TYPE_VARCHAR=15,
MYSQL_TYPE_BIT=16,
MYSQL_TYPE_NEWDECIMAL=246,
MYSQL_TYPE_ENUM=247,
MYSQL_TYPE_SET=248,
MYSQL_TYPE_TINY_BLOB=249,
MYSQL_TYPE_MEDIUM_BLOB=250,
MYSQL_TYPE_LONG_BLOB=251,
MYSQL_TYPE_BLOB=252,
MYSQL_TYPE_VAR_STRING=253,
MYSQL_TYPE_STRING=254,
MYSQL_TYPE_GEOMETRY=255
};
enum mysql_option {
MYSQL_SET_CHARSET_NAME=7,
};
enum mysql_status {
MYSQL_STATUS_READY=0,
};
#define CLIENT_COMPRESS 32
#define CLIENT_INTERACTIVE 1024
#define MYSQL_DATA_TRUNCATED 101
#define MYSQL_ERRMSG_SIZE 512
#define MYSQL_NO_DATA 100
#define SCRAMBLE_LENGTH 20
#define SQLSTATE_LENGTH 5
typedef struct st_list LIST;
typedef struct st_mem_root MEM_ROOT;
typedef struct st_mysql MYSQL;
typedef struct st_mysql_bind MYSQL_BIND;
typedef struct st_mysql_field MYSQL_FIELD;
typedef struct st_mysql_res MYSQL_RES;
typedef char** MYSQL_ROW;
typedef struct st_mysql_stmt MYSQL_STMT;
typedef char my_bool;
#ifndef Socket_defined
typedef int my_socket;
#define INVALID_SOCKET -1
#endif
typedef Tcl_WideUInt my_ulonglong;
typedef struct st_net NET;
typedef struct st_used_mem USED_MEM;
typedef struct st_vio Vio;
struct st_mem_root {
USED_MEM *free;
USED_MEM *used;
USED_MEM *pre_alloc;
size_t min_malloc;
size_t block_size;
unsigned int block_num;
unsigned int first_block_usage;
void (*error_handler)(void);
};
struct st_mysql_options {
unsigned int connect_timeout;
unsigned int read_timeout;
unsigned int write_timeout;
unsigned int port;
unsigned int protocol;
unsigned long client_flag;
char *host;
char *user;
char *password;
char *unix_socket;
char *db;
struct st_dynamic_array *init_commands;
char *my_cnf_file;
char *my_cnf_group;
char *charset_dir;
char *charset_name;
char *ssl_key;
char *ssl_cert;
char *ssl_ca;
char *ssl_capath;
char *ssl_cipher;
char *shared_memory_base_name;
unsigned long max_allowed_packet;
my_bool use_ssl;
my_bool compress,named_pipe;
my_bool rpl_probe;
my_bool rpl_parse;
my_bool no_master_reads;
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)
my_bool separate_thread;
#endif
enum mysql_option methods_to_use;
char *client_ip;
my_bool secure_auth;
my_bool report_data_truncation;
int (*local_infile_init)(void **, const char *, void *);
int (*local_infile_read)(void *, char *, unsigned int);
void (*local_infile_end)(void *);
int (*local_infile_error)(void *, char *, unsigned int);
void *local_infile_userdata;
void *extension;
};
struct st_net {
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
Vio *vio;
unsigned char *buff;
unsigned char *buff_end;
unsigned char *write_pos;
unsigned char *read_pos;
my_socket fd;
unsigned long remain_in_buf;
unsigned long length;
unsigned long buf_length;
unsigned long where_b;
unsigned long max_packet;
unsigned long max_packet_size;
unsigned int pkt_nr;
unsigned int compress_pkt_nr;
unsigned int write_timeout;
unsigned int read_timeout;
unsigned int retry_count;
int fcntl;
unsigned int *return_status;
unsigned char reading_or_writing;
char save_char;
my_bool unused0;
my_bool unused;
my_bool compress;
my_bool unused1;
#endif
unsigned char *query_cache_query;
unsigned int last_errno;
unsigned char error;
my_bool unused2;
my_bool return_errno;
char last_error[MYSQL_ERRMSG_SIZE];
char sqlstate[SQLSTATE_LENGTH+1];
void *extension;
#if defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
my_bool skip_big_packet;
#endif
};
/*
* st_mysql differs between 5.0 and 5.1, but the 5.0 version is a
* strict subset, we don't use any of the 5.1 fields, and we don't
* ever allocate the structure ourselves.
*/
struct st_mysql {
NET net;
unsigned char *connector_fd;
char *host;
char *user;
char *passwd;
char *unix_socket;
char *server_version;
char *host_info;
char *info;
char *db;
struct charset_info_st *charset;
MYSQL_FIELD *fields;
MEM_ROOT field_alloc;
my_ulonglong affected_rows;
my_ulonglong insert_id;
my_ulonglong extra_info;
unsigned long thread_id;
unsigned long packet_length;
unsigned int port;
unsigned long client_flag;
unsigned long server_capabilities;
unsigned int protocol_version;
unsigned int field_count;
unsigned int server_status;
unsigned int server_language;
unsigned int warning_count;
struct st_mysql_options options;
enum mysql_status status;
my_bool free_me;
my_bool reconnect;
char scramble[SCRAMBLE_LENGTH+1];
my_bool rpl_pivot;
struct st_mysql *master;
struct st_mysql *next_slave;
struct st_mysql* last_used_slave;
struct st_mysql* last_used_con;
LIST *stmts;
const struct st_mysql_methods *methods;
void *thd;
my_bool *unbuffered_fetch_owner;
char *info_buffer;
};
/*
* There are different version of the MYSQL_BIND structure before and after
* MySQL 5.1. We go after the fields of the structure using accessor functions
* so that the code in this file is compatible with both versions.
*/
struct st_mysql_bind_51 { /* Post-5.1 */
unsigned long* length;
my_bool* is_null;
void* buffer;
my_bool* error;
unsigned char* row_ptr;
void (*store_param_func)(NET* net, MYSQL_BIND* param);
void (*fetch_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
void (*skip_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
unsigned long buffer_length;
unsigned long offset;
unsigned long length_value;
unsigned int param_number;
unsigned int pack_length;
enum enum_field_types buffer_type;
my_bool error_value;
my_bool is_unsigned;
my_bool long_data_used;
my_bool is_null_value;
void* extension;
};
struct st_mysql_bind_50 { /* Pre-5.1 */
unsigned long* length;
my_bool* is_null;
void* buffer;
my_bool* error;
enum enum_field_types buffer_type;
unsigned long buffer_length;
unsigned char* row_ptr;
unsigned long offset;
unsigned long length_value;
unsigned int param_number;
unsigned int pack_length;
my_bool error_value;
my_bool is_unsigned;
my_bool long_data_used;
my_bool is_null_value;
void (*store_param_func)(NET* net, MYSQL_BIND* param);
void (*fetch_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
void (*skip_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
};
/*
* There are also different versions of the MYSQL_FIELD structure; fortunately,
* the 5.1 version is a strict extension of the 5.0 version.
*/
struct st_mysql_field {
char* name;
char *org_name;
char* table;
char* org_table;
char* db;
char* catalog;
char* def;
unsigned long length;
unsigned long max_length;
unsigned int name_length;
unsigned int org_name_length;
unsigned int table_length;
unsigned int org_table_length;
unsigned int db_length;
unsigned int catalog_length;
unsigned int def_length;
unsigned int flags;
unsigned int decimals;
unsigned int charsetnr;
enum enum_field_types type;
};
struct st_mysql_field_50 {
struct st_mysql_field field;
};
struct st_mysql_field_51 {
struct st_mysql_field field;
void* extension;
};
#define NOT_NULL_FLAG 1
#define IS_NUM(t) ((t) <= MYSQL_TYPE_INT24 || (t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
#define mysql_library_init mysql_server_init
#define mysql_library_end mysql_server_end
#include "mysqlStubs.h"
#endif /* not FAKEMYSQL_H_INCLUDED */
@@ -1,24 +0,0 @@
/*
* Macros used to cast between pointers and integers (e.g. when storing an int
* in ClientData), on 64-bit architectures they avoid gcc warning about "cast
* to/from pointer from/to integer of different size".
*/
#if !defined(INT2PTR) && !defined(PTR2INT)
# if defined(HAVE_INTPTR_T) || defined(intptr_t)
# define INT2PTR(p) ((void *)(intptr_t)(p))
# define PTR2INT(p) ((int)(intptr_t)(p))
# else
# define INT2PTR(p) ((void *)(p))
# define PTR2INT(p) ((int)(p))
# endif
#endif
#if !defined(UINT2PTR) && !defined(PTR2UINT)
# if defined(HAVE_UINTPTR_T) || defined(uintptr_t)
# define UINT2PTR(p) ((void *)(uintptr_t)(p))
# define PTR2UINT(p) ((unsigned int)(uintptr_t)(p))
# else
# define UINT2PTR(p) ((void *)(p))
# define PTR2UINT(p) ((unsigned int)(p))
# endif
#endif
@@ -1,58 +0,0 @@
# mysqlStubDefs.txt --
#
# Definitions of routines in the MySQL libraries that will be
# resolved and imported at run time.
#
# This file contains only function declarations necessary to interoperability
# with the SQL/CLI application programming interface. The programmers believe
# that the material in this file is not subject to copyright, under the
# doctrines of scenes a faire and of the merger of idea and expression.
# Accordingly, this file is in the public domain.
#
#-----------------------------------------------------------------------------
* STUBSTRUCT: mysqlStubs
* LIBRARY: mariadbclient mariadb mysqlclient_r mysqlclient mysql
* CONVENTION: STDCALL
int mysql_server_init(int, char**, char**);
void mysql_server_end(void);
my_ulonglong mysql_affected_rows(MYSQL*);
my_bool mysql_autocommit(MYSQL*, my_bool);
my_bool mysql_change_user(MYSQL*, const char*, const char*, const char*);
my_bool mysql_close(MYSQL*);
my_bool mysql_commit(MYSQL*);
unsigned int mysql_errno(MYSQL*);
const char* mysql_error(MYSQL*);
MYSQL_FIELD* mysql_fetch_fields(MYSQL_RES*);
unsigned long* mysql_fetch_lengths(MYSQL_RES*);
MYSQL_ROW mysql_fetch_row(MYSQL_RES*);
unsigned int mysql_field_count(MYSQL*);
void mysql_free_result(MYSQL_RES*);
unsigned long mysql_get_client_version(void);
MYSQL* mysql_init(MYSQL*);
MYSQL_RES* mysql_list_fields(MYSQL*, const char*, const char*);
MYSQL_RES* mysql_list_tables(MYSQL*, const char*);
unsigned int mysql_num_fields(MYSQL_RES*);
int mysql_options(MYSQL*, enum mysql_option, const void*);
int mysql_query(MYSQL*, const char*);
MYSQL* mysql_real_connect(MYSQL*, const char*, const char*, const char*, const char*, unsigned int, const char*, unsigned long);
my_bool mysql_rollback(MYSQL*);
int mysql_select_db(MYSQL*, const char*);
const char* mysql_sqlstate(MYSQL*);
my_bool mysql_ssl_set(MYSQL*, const char*, const char*, const char*, const char*, const char*);
my_ulonglong mysql_stmt_affected_rows(MYSQL_STMT*);
my_bool mysql_stmt_bind_param(MYSQL_STMT*, MYSQL_BIND*);
my_bool mysql_stmt_bind_result(MYSQL_STMT*, MYSQL_BIND*);
my_bool mysql_stmt_close(MYSQL_STMT*);
unsigned int mysql_stmt_errno(MYSQL_STMT*);
const char* mysql_stmt_error(MYSQL_STMT*);
int mysql_stmt_execute(MYSQL_STMT*);
int mysql_stmt_fetch(MYSQL_STMT*);
int mysql_stmt_fetch_column(MYSQL_STMT*, MYSQL_BIND*, unsigned int, unsigned long);
MYSQL_STMT* mysql_stmt_init(MYSQL*);
int mysql_stmt_prepare(MYSQL_STMT*, const char*, unsigned long);
MYSQL_RES* mysql_stmt_result_metadata(MYSQL_STMT*);
const char* mysql_stmt_sqlstate(MYSQL_STMT*);
int mysql_stmt_store_result(MYSQL_STMT*);
MYSQL_RES* mysql_store_result(MYSQL*);
@@ -1,188 +0,0 @@
/*
* mysqlStubInit.c --
*
* Stubs tables for the foreign MySQL libraries so that
* Tcl extensions can use them without the linker's knowing about them.
*
* @CREATED@ 2022-09-17 18:18:42Z by genExtStubs.tcl from ./generic/mysqlStubDefs.txt
*
* Copyright (c) 2010 by Kevin B. Kenny.
*
* Please refer to the file, 'license.terms' for the conditions on
* redistribution of this file and for a DISCLAIMER OF ALL WARRANTIES.
*
*-----------------------------------------------------------------------------
*/
#include <tcl.h>
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
#include "fakemysql.h"
/*
* Static data used in this file
*/
/*
* Names of the libraries that might contain the MySQL API
*/
#if defined(__CYGWIN__) && !defined(LIBPREFIX)
# define LIBPREFIX "cyg"
#else
# define LIBPREFIX "lib"
#endif
static const char *const mysqlStubLibNames[] = {
/* @LIBNAMES@: DO NOT EDIT THESE NAMES */
"mariadbclient", "mariadb", "mysqlclient_r", "mysqlclient", "mysql", NULL
/* @END@ */
};
/* ABI Version numbers of the MySQL API that we can cope with */
static const char mysqlSuffixes[][4] = {
"", ".3", ".21", ".20", ".19", ".18", ".17", ".16", ".15"
};
/* Names of the functions that we need from MySQL */
static const char *const mysqlSymbolNames[] = {
/* @SYMNAMES@: DO NOT EDIT THESE NAMES */
"mysql_server_init",
"mysql_server_end",
"mysql_affected_rows",
"mysql_autocommit",
"mysql_change_user",
"mysql_close",
"mysql_commit",
"mysql_errno",
"mysql_error",
"mysql_fetch_fields",
"mysql_fetch_lengths",
"mysql_fetch_row",
"mysql_field_count",
"mysql_free_result",
"mysql_get_client_version",
"mysql_init",
"mysql_list_fields",
"mysql_list_tables",
"mysql_num_fields",
"mysql_options",
"mysql_query",
"mysql_real_connect",
"mysql_rollback",
"mysql_select_db",
"mysql_sqlstate",
"mysql_ssl_set",
"mysql_stmt_affected_rows",
"mysql_stmt_bind_param",
"mysql_stmt_bind_result",
"mysql_stmt_close",
"mysql_stmt_errno",
"mysql_stmt_error",
"mysql_stmt_execute",
"mysql_stmt_fetch",
"mysql_stmt_fetch_column",
"mysql_stmt_init",
"mysql_stmt_prepare",
"mysql_stmt_result_metadata",
"mysql_stmt_sqlstate",
"mysql_stmt_store_result",
"mysql_store_result",
NULL
/* @END@ */
};
/*
* Table containing pointers to the functions named above.
*/
static mysqlStubDefs mysqlStubsTable;
const mysqlStubDefs* mysqlStubs = &mysqlStubsTable;
/*
*-----------------------------------------------------------------------------
*
* MysqlInitStubs --
*
* Initialize the Stubs table for the MySQL API
*
* Results:
* Returns the handle to the loaded MySQL client library, or NULL
* if the load is unsuccessful.
*
* Leaves the name of the loaded client library in the interpreter if
* successful.
*
* Leaves an error message in the interpreter on failure.
*
*-----------------------------------------------------------------------------
*/
MODULE_SCOPE Tcl_LoadHandle
MysqlInitStubs(Tcl_Interp* interp)
{
int status; /* Status of Tcl library calls */
Tcl_Obj* path; /* Path name of a module to be loaded */
Tcl_Obj* shlibext; /* Extension to use for load modules */
Tcl_LoadHandle handle = NULL;
/* Handle to a load module */
int i;
size_t j;
/* Determine the shared library extension */
status = Tcl_EvalEx(interp, "::info sharedlibextension", -1,
TCL_EVAL_GLOBAL);
if (status != TCL_OK) return NULL;
shlibext = Tcl_GetObjResult(interp);
Tcl_IncrRefCount(shlibext);
/* Walk the list of possible library names to find an MySQL client */
status = TCL_ERROR;
for (i = 0; status == TCL_ERROR && mysqlStubLibNames[i] != NULL; ++i) {
for (j = 0; status == TCL_ERROR && (j < sizeof(mysqlSuffixes)/sizeof(mysqlSuffixes[0])); ++j) {
path = Tcl_NewStringObj(LIBPREFIX, -1);
Tcl_AppendToObj(path, mysqlStubLibNames[i], -1);
#ifdef __CYGWIN__
if (*mysqlSuffixes[j]) {
Tcl_AppendToObj(path, "-", -1);
Tcl_AppendToObj(path, mysqlSuffixes[j]+1, -1);
}
#endif
Tcl_AppendObjToObj(path, shlibext);
#ifndef __CYGWIN__
Tcl_AppendToObj(path, mysqlSuffixes[j], -1);
#endif
Tcl_IncrRefCount(path);
/* Try to load a client library and resolve symbols within it. */
Tcl_ResetResult(interp);
status = Tcl_LoadFile(interp, path, mysqlSymbolNames, 0,
&mysqlStubsTable, &handle);
if (status != TCL_OK) {
Tcl_DecrRefCount(path);
}
}
}
/*
* Either we've successfully loaded a library (status == TCL_OK),
* or we've run out of library names (in which case status==TCL_ERROR
* and the error message reflects the last unsuccessful load attempt).
*/
Tcl_DecrRefCount(shlibext);
if (status != TCL_OK) {
return NULL;
}
Tcl_SetObjResult(interp, path);
Tcl_DecrRefCount(path);
return handle;
}
@@ -1,101 +0,0 @@
/*
*-----------------------------------------------------------------------------
*
* ./generic/mysqlStubs.h --
*
* Stubs for procedures in mysqlStubDefs.txt
*
* Generated by genExtStubs.tcl: DO NOT EDIT
* 2022-09-17 18:18:42Z
*
*-----------------------------------------------------------------------------
*/
typedef struct mysqlStubDefs {
/* Functions from libraries: mariadbclient mariadb mysqlclient_r mysqlclient mysql */
int (STDCALL*mysql_server_initPtr)(int, char**, char**);
void (STDCALL*mysql_server_endPtr)(void);
my_ulonglong (STDCALL*mysql_affected_rowsPtr)(MYSQL*);
my_bool (STDCALL*mysql_autocommitPtr)(MYSQL*, my_bool);
my_bool (STDCALL*mysql_change_userPtr)(MYSQL*, const char*, const char*, const char*);
my_bool (STDCALL*mysql_closePtr)(MYSQL*);
my_bool (STDCALL*mysql_commitPtr)(MYSQL*);
unsigned int (STDCALL*mysql_errnoPtr)(MYSQL*);
const char* (STDCALL*mysql_errorPtr)(MYSQL*);
MYSQL_FIELD* (STDCALL*mysql_fetch_fieldsPtr)(MYSQL_RES*);
unsigned long* (STDCALL*mysql_fetch_lengthsPtr)(MYSQL_RES*);
MYSQL_ROW (STDCALL*mysql_fetch_rowPtr)(MYSQL_RES*);
unsigned int (STDCALL*mysql_field_countPtr)(MYSQL*);
void (STDCALL*mysql_free_resultPtr)(MYSQL_RES*);
unsigned long (STDCALL*mysql_get_client_versionPtr)(void);
MYSQL* (STDCALL*mysql_initPtr)(MYSQL*);
MYSQL_RES* (STDCALL*mysql_list_fieldsPtr)(MYSQL*, const char*, const char*);
MYSQL_RES* (STDCALL*mysql_list_tablesPtr)(MYSQL*, const char*);
unsigned int (STDCALL*mysql_num_fieldsPtr)(MYSQL_RES*);
int (STDCALL*mysql_optionsPtr)(MYSQL*, enum mysql_option, const void*);
int (STDCALL*mysql_queryPtr)(MYSQL*, const char*);
MYSQL* (STDCALL*mysql_real_connectPtr)(MYSQL*, const char*, const char*, const char*, const char*, unsigned int, const char*, unsigned long);
my_bool (STDCALL*mysql_rollbackPtr)(MYSQL*);
int (STDCALL*mysql_select_dbPtr)(MYSQL*, const char*);
const char* (STDCALL*mysql_sqlstatePtr)(MYSQL*);
my_bool (STDCALL*mysql_ssl_setPtr)(MYSQL*, const char*, const char*, const char*, const char*, const char*);
my_ulonglong (STDCALL*mysql_stmt_affected_rowsPtr)(MYSQL_STMT*);
my_bool (STDCALL*mysql_stmt_bind_paramPtr)(MYSQL_STMT*, MYSQL_BIND*);
my_bool (STDCALL*mysql_stmt_bind_resultPtr)(MYSQL_STMT*, MYSQL_BIND*);
my_bool (STDCALL*mysql_stmt_closePtr)(MYSQL_STMT*);
unsigned int (STDCALL*mysql_stmt_errnoPtr)(MYSQL_STMT*);
const char* (STDCALL*mysql_stmt_errorPtr)(MYSQL_STMT*);
int (STDCALL*mysql_stmt_executePtr)(MYSQL_STMT*);
int (STDCALL*mysql_stmt_fetchPtr)(MYSQL_STMT*);
int (STDCALL*mysql_stmt_fetch_columnPtr)(MYSQL_STMT*, MYSQL_BIND*, unsigned int, unsigned long);
MYSQL_STMT* (STDCALL*mysql_stmt_initPtr)(MYSQL*);
int (STDCALL*mysql_stmt_preparePtr)(MYSQL_STMT*, const char*, unsigned long);
MYSQL_RES* (STDCALL*mysql_stmt_result_metadataPtr)(MYSQL_STMT*);
const char* (STDCALL*mysql_stmt_sqlstatePtr)(MYSQL_STMT*);
int (STDCALL*mysql_stmt_store_resultPtr)(MYSQL_STMT*);
MYSQL_RES* (STDCALL*mysql_store_resultPtr)(MYSQL*);
} mysqlStubDefs;
#define mysql_server_init (mysqlStubs->mysql_server_initPtr)
#define mysql_server_end (mysqlStubs->mysql_server_endPtr)
#define mysql_affected_rows (mysqlStubs->mysql_affected_rowsPtr)
#define mysql_autocommit (mysqlStubs->mysql_autocommitPtr)
#define mysql_change_user (mysqlStubs->mysql_change_userPtr)
#define mysql_close (mysqlStubs->mysql_closePtr)
#define mysql_commit (mysqlStubs->mysql_commitPtr)
#define mysql_errno (mysqlStubs->mysql_errnoPtr)
#define mysql_error (mysqlStubs->mysql_errorPtr)
#define mysql_fetch_fields (mysqlStubs->mysql_fetch_fieldsPtr)
#define mysql_fetch_lengths (mysqlStubs->mysql_fetch_lengthsPtr)
#define mysql_fetch_row (mysqlStubs->mysql_fetch_rowPtr)
#define mysql_field_count (mysqlStubs->mysql_field_countPtr)
#define mysql_free_result (mysqlStubs->mysql_free_resultPtr)
#define mysql_get_client_version (mysqlStubs->mysql_get_client_versionPtr)
#define mysql_init (mysqlStubs->mysql_initPtr)
#define mysql_list_fields (mysqlStubs->mysql_list_fieldsPtr)
#define mysql_list_tables (mysqlStubs->mysql_list_tablesPtr)
#define mysql_num_fields (mysqlStubs->mysql_num_fieldsPtr)
#define mysql_options (mysqlStubs->mysql_optionsPtr)
#define mysql_query (mysqlStubs->mysql_queryPtr)
#define mysql_real_connect (mysqlStubs->mysql_real_connectPtr)
#define mysql_rollback (mysqlStubs->mysql_rollbackPtr)
#define mysql_select_db (mysqlStubs->mysql_select_dbPtr)
#define mysql_sqlstate (mysqlStubs->mysql_sqlstatePtr)
#define mysql_ssl_set (mysqlStubs->mysql_ssl_setPtr)
#define mysql_stmt_affected_rows (mysqlStubs->mysql_stmt_affected_rowsPtr)
#define mysql_stmt_bind_param (mysqlStubs->mysql_stmt_bind_paramPtr)
#define mysql_stmt_bind_result (mysqlStubs->mysql_stmt_bind_resultPtr)
#define mysql_stmt_close (mysqlStubs->mysql_stmt_closePtr)
#define mysql_stmt_errno (mysqlStubs->mysql_stmt_errnoPtr)
#define mysql_stmt_error (mysqlStubs->mysql_stmt_errorPtr)
#define mysql_stmt_execute (mysqlStubs->mysql_stmt_executePtr)
#define mysql_stmt_fetch (mysqlStubs->mysql_stmt_fetchPtr)
#define mysql_stmt_fetch_column (mysqlStubs->mysql_stmt_fetch_columnPtr)
#define mysql_stmt_init (mysqlStubs->mysql_stmt_initPtr)
#define mysql_stmt_prepare (mysqlStubs->mysql_stmt_preparePtr)
#define mysql_stmt_result_metadata (mysqlStubs->mysql_stmt_result_metadataPtr)
#define mysql_stmt_sqlstate (mysqlStubs->mysql_stmt_sqlstatePtr)
#define mysql_stmt_store_result (mysqlStubs->mysql_stmt_store_resultPtr)
#define mysql_store_result (mysqlStubs->mysql_store_resultPtr)
MODULE_SCOPE const mysqlStubDefs *mysqlStubs;
File diff suppressed because it is too large Load Diff
@@ -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.
}
-38
View File
@@ -1,38 +0,0 @@
This software is copyrighted by Kevin B. Kenny, and by other parties.
The following terms apply to all files associated with the software
unless explicitly disclaimed in individual files.
The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.
IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.
GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license.
-1
View File
@@ -1 +0,0 @@
1c06baec6ef4287a04cc1e6f8bf4d07cd38779a2cd7dd1476e4f2483b8efe249
-14
View File
@@ -1,14 +0,0 @@
# Index file to load the TDBC MySQL package.
if {![package vsatisfies [package provide Tcl] 8.6-]} {
return
}
if {[package vsatisfies [package provide Tcl] 9.0-]} {
package ifneeded tdbc::mysql @PACKAGE_VERSION@ \
"[list source -encoding utf-8 [file join $dir @PACKAGE_NAME@.tcl]]\;\
[list load [file join $dir @PKG_LIB_FILE9@] [string totitle @PACKAGE_NAME@]]"
} else {
package ifneeded tdbc::mysql @PACKAGE_VERSION@ \
"[list source -encoding utf-8 [file join $dir @PACKAGE_NAME@.tcl]]\;\
[list load [file join $dir @PKG_LIB_FILE8@] [string totitle @PACKAGE_NAME@]]"
}
@@ -1,26 +0,0 @@
These files comprise the basic building blocks for a Tcl Extension
Architecture (TEA) extension. For more information on TEA see:
https://wiki.tcl-lang.org/page/TEA
This package is part of the Tcl project at SourceForge, but sources
and bug/patch database are hosted on fossil here:
https://core.tcl-lang.org/tclconfig
This package is a freely available open source package. You can do
virtually anything you like with it, such as modifying it, redistributing
it, and selling it either in whole or in part.
CONTENTS
========
The following is a short description of the files you will find in
the sample extension.
README.txt This file
install-sh Program used for copying binaries and script files
to their install locations.
tcl.m4 Collection of Tcl autoconf macros. Included by a package's
aclocal.m4 to define TEA_* macros.

Some files were not shown because too many files have changed in this diff Show More