pax_global_header 0000666 0000000 0000000 00000000064 10407735440 0014516 g ustar 00root root 0000000 0000000 52 comment=17c9a3575f22f3187ed42889c163b5fa1c2e2694 erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/ 0000775 0000000 0000000 00000000000 10407735440 0022255 5 ustar 00root root 0000000 0000000 erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ 0000775 0000000 0000000 00000000000 10407735440 0023735 5 ustar 00root root 0000000 0000000 erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ZMySQLDDA/ 0000775 0000000 0000000 00000000000 10407735440 0025345 5 ustar 00root root 0000000 0000000 erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ZMySQLDDA/.cvsignore 0000775 0000000 0000000 00000000023 10407735440 0027343 0 ustar 00root root 0000000 0000000 .AppleDouble *.pyc erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ZMySQLDDA/CHANGES.txt 0000775 0000000 0000000 00000000063 10407735440 0027160 0 ustar 00root root 0000000 0000000 Z MySQL DDA Releases 2.0.9 Initial Release erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ZMySQLDDA/DA.py 0000775 0000000 0000000 00000013235 10407735440 0026212 0 ustar 00root root 0000000 0000000 ############################################################################## # # Zope Public License (ZPL) Version 1.0 # ------------------------------------- # # Copyright (c) Digital Creations. All rights reserved. # Copyright (c) Nexedi SARL 2004. All rights reserved. # # This license has been certified as Open Source(tm). # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # 1. Redistributions in source code must retain the above copyright # notice, this list of conditions, and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions, and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # 3. Digital Creations requests that attribution be given to Zope # in any manner possible. Zope includes a "Powered by Zope" # button that is installed by default. While it is not a license # violation to remove this button, it is requested that the # attribution remain. A significant investment has been put # into Zope, and this effort will continue if the Zope community # continues to grow. This is one way to assure that growth. # # 4. All advertising materials and documentation mentioning # features derived from or use of this software must display # the following acknowledgement: # # "This product includes software developed by Digital Creations # for use in the Z Object Publishing Environment # (http://www.zope.org/)." # # In the event that the product being advertised includes an # intact Zope distribution (with copyright and license included) # then this clause is waived. # # 5. Names associated with Zope or Digital Creations must not be used to # endorse or promote products derived from this software without # prior written permission from Digital Creations. # # 6. Modified redistributions of any form whatsoever must retain # the following acknowledgment: # # "This product includes software developed by Digital Creations # for use in the Z Object Publishing Environment # (http://www.zope.org/)." # # Intact (re-)distributions of any official Zope release do not # require an external acknowledgement. # # 7. Modifications are encouraged but must be packaged separately as # patches to official Zope releases. Distributions that do not # clearly separate the patches from the original work must be clearly # labeled as unofficial distributions. Modifications which do not # carry the name Zope may be packaged in any form, as long as they # conform to all of the clauses above. # # # Disclaimer # # THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY # EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # # This software consists of contributions made by Digital Creations and # many individuals on behalf of Digital Creations. Specific # attributions are listed in the accompanying credits file. # ############################################################################## from Products.ZMySQLDA.DA import * from db import DeferredDB manage_addZMySQLDeferredConnectionForm=HTMLFile('deferredConnectionAdd',globals()) def manage_addZMySQLDeferredConnection(self, id, title, connection_string, check=None, REQUEST=None): """Add a DB connection to a folder""" self._setObject(id, DeferredConnection(id, title, connection_string, check)) if REQUEST is not None: return self.manage_main(self,REQUEST) class DeferredConnection(Connection): """ Experimental MySQL DA which implements deferred SQL code execution to reduce locking issues """ meta_type=title='Z %s Database Deferred Connection' % database_type def factory(self): return DeferredDB def connect(self,s): try: self._v_database_connection.close() except: pass self._v_connected='' DB=self.factory() ## No try. DO. self._v_database_connection=DeferredDB(s) self._v_connected=DateTime() return self classes=('DA.DeferredConnection') meta_types=( {'name':'Z %s Database Deferred Connection' % database_type, 'action':'manage_addZ%sDeferredConnectionForm' % database_type, }, ) folder_methods={ 'manage_addZMySQLDeferredConnection': manage_addZMySQLDeferredConnection, 'manage_addZMySQLDeferredConnectionForm': manage_addZMySQLDeferredConnectionForm, } __ac_permissions__=( ('Add Z MySQL Database Connections', ('manage_addZMySQLConnectionForm', 'manage_addZMySQLConnection')), ) misc_={'conn': ImageFile( os.path.join('Shared','DC','ZRDB','www','DBAdapterFolder_icon.gif'))} for icon in ('table', 'view', 'stable', 'what', 'field', 'text','bin','int','float', 'date','time','datetime'): misc_[icon]=ImageFile(os.path.join('icons','%s.gif') % icon, globals()) erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ZMySQLDDA/DEPENDENCIES.txt 0000775 0000000 0000000 00000000121 10407735440 0027731 0 ustar 00root root 0000000 0000000 * MySQL-python-0.9.2 or newer * Zope-2.3.0 or newer * ZMySQLDA 2.0.9 or newer erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ZMySQLDDA/README.txt 0000775 0000000 0000000 00000001275 10407735440 0027053 0 ustar 00root root 0000000 0000000 Z MySQL Deferred DA This is the Z MySQL database deferred adapter product for the Z Object Publishing Environment. It is based on ZMySQLDA and follows the same API and installation procedure. The main difference with ZMySQLDA is that the execution of SQL expressions is deferred and executed during the Zope commit time rather than immediately. This allows for example to group INSERT and DELETE statements in a very short amount of time, which reduces risks of lock. It also allows to use MyISAM tables without raising useless exception messages related to the non transactional nature of MyISAM. ** IMPORTANT ** SELECT expressions will not work in deferred mode erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ZMySQLDDA/VERSION.txt 0000775 0000000 0000000 00000000017 10407735440 0027234 0 ustar 00root root 0000000 0000000 ZMySQLDA 2.0.9 erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ZMySQLDDA/__init__.py 0000775 0000000 0000000 00000010363 10407735440 0027464 0 ustar 00root root 0000000 0000000 ############################################################################## # # Zope Public License (ZPL) Version 1.0 # ------------------------------------- # # Copyright (c) Digital Creations. All rights reserved. # # This license has been certified as Open Source(tm). # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # 1. Redistributions in source code must retain the above copyright # notice, this list of conditions, and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions, and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # 3. Digital Creations requests that attribution be given to Zope # in any manner possible. Zope includes a "Powered by Zope" # button that is installed by default. While it is not a license # violation to remove this button, it is requested that the # attribution remain. A significant investment has been put # into Zope, and this effort will continue if the Zope community # continues to grow. This is one way to assure that growth. # # 4. All advertising materials and documentation mentioning # features derived from or use of this software must display # the following acknowledgement: # # "This product includes software developed by Digital Creations # for use in the Z Object Publishing Environment # (http://www.zope.org/)." # # In the event that the product being advertised includes an # intact Zope distribution (with copyright and license included) # then this clause is waived. # # 5. Names associated with Zope or Digital Creations must not be used to # endorse or promote products derived from this software without # prior written permission from Digital Creations. # # 6. Modified redistributions of any form whatsoever must retain # the following acknowledgment: # # "This product includes software developed by Digital Creations # for use in the Z Object Publishing Environment # (http://www.zope.org/)." # # Intact (re-)distributions of any official Zope release do not # require an external acknowledgement. # # 7. Modifications are encouraged but must be packaged separately as # patches to official Zope releases. Distributions that do not # clearly separate the patches from the original work must be clearly # labeled as unofficial distributions. Modifications which do not # carry the name Zope may be packaged in any form, as long as they # conform to all of the clauses above. # # # Disclaimer # # THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY # EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # # This software consists of contributions made by Digital Creations and # many individuals on behalf of Digital Creations. Specific # attributions are listed in the accompanying credits file. # ############################################################################## __doc__='''Generic Deferred Database Adapter Package Registration $Id$''' __version__='$Revision$'[11:-2] import sys, string import DA methods=DA.folder_methods misc_=DA.misc_ def initialize(context): context.registerClass( DA.DeferredConnection, permission='Add Z MySQL Database Deferred Connections', constructors=(DA.manage_addZMySQLDeferredConnectionForm, DA.manage_addZMySQLDeferredConnection,) ) context.registerHelp() context.registerHelpTitle('ZMySQLDDA') erp5-17c9a3575f22f3187ed42889c163b5fa1c2e2694-product-ZMySQLDDA/product/ZMySQLDDA/browse.dtml 0000775 0000000 0000000 00000000615 10407735440 0027535 0 ustar 00root root 0000000 0000000
The connection string used for Z MySQL Database Connection is of the form:
[*lock] [+/-][database][@host[:port]] [user [password [unix_socket]]]or typically:
database user passwordto use a MySQL server on localhost via the standard UNIX socket. Only specify host if the server is on a remote system. You can use a non-standard port, if necessary. Hint: To use a non-standard port on the local system, use 127.0.0.1 for the host instead of localhost.
Either a database or a host or both must be specified.
If the UNIX socket is in a non-standard location, you can specify the full path to it after the password.
A '-' in front of the database tells ZMySQLDA to not use Zope's Transaction Manager, even if the server supports transactions. A '+' in front of the database tells ZMySQLDA that it must use transactions; an exception will be raised if they are not supported by the server. If neither '-' or '+' are present, then transactions will be enabled if the server supports them. If you are using non-transaction safe tables (TSTs) on a server that supports TSTs, use '-'. If you require transactions, use '+'. If you aren't sure, don't use either.
*lock at the begining of the connection string means to psuedo-transactional. When the transaction begins, it will acquire a lock on the server named lock (i.e. MYLOCK). When the transaction commits, the lock will be released. If the transaction is aborted and restarted, which can happen due to a ConflictError, you'll get an error in the logs, and inconsistent data. In this respect, it's equivalent to transactions turned off.
Transactions are highly recommended. Using a named lock in conjunctions with transactions is probably pointless.
The connection string used for Z MySQL Database Connection is of the form:
[*lock] [+/-][database][@host[:port]] [user [password [unix_socket]]]or typically:
database user passwordto use a MySQL server on localhost via the standard UNIX socket. Only specify host if the server is on a remote system. You can use a non-standard port, if necessary. Hint: To use a non-standard port on the local system, use 127.0.0.1 for the host instead of localhost.
Either a database or a host or both must be specified.
If the UNIX socket is in a non-standard location, you can specify the full path to it after the password.
A '-' in front of the database tells ZMySQLDA to not use Zope's Transaction Manager, even if the server supports transactions. A '+' in front of the database tells ZMySQLDA that it must use transactions; an exception will be raised if they are not supported by the server. If neither '-' or '+' are present, then transactions will be enabled if the server supports them. If you are using non-transaction safe tables (TSTs) on a server that supports TSTs, use '-'. If you require transactions, use '+'. If you aren't sure, don't use either.
*lock at the begining of the connection string means to psuedo-transactional. When the transaction begins, it will acquire a lock on the server named lock (i.e. MYLOCK). When the transaction commits, the lock will be released. If the transaction is aborted and restarted, which can happen due to a ConflictError, you'll get an error in the logs, and inconsistent data. In this respect, it's equivalent to transactions turned off.
Transactions are highly recommended. Using a named lock in conjunctions with transactions is probably pointless.