Author: Tobias Schlitt
Date: 2007-04-02 09:02:19 +0200 (Mon, 02 Apr 2007)
New Revision: 4795

Log:
- Fix use of sequence generator with SQLite (native must be used here, too).
- Optimized wrapping of native generator in sequence generator.

Modified:
   trunk/PersistentObject/src/generators/sequence_generator.php

Modified: trunk/PersistentObject/src/generators/sequence_generator.php
===================================================================
--- trunk/PersistentObject/src/generators/sequence_generator.php        
2007-03-31 09:55:19 UTC (rev 4794)
+++ trunk/PersistentObject/src/generators/sequence_generator.php        
2007-04-02 07:02:19 UTC (rev 4795)
@@ -33,6 +33,12 @@
 class ezcPersistentSequenceGenerator extends ezcPersistentIdentifierGenerator
 {
     /**
+     * Native generator, if sequence generator is used with MySQL or SQLite. 
+     * 
+     * @var ezcPersistentNativeGenerator
+     */
+    private $nativeGenerator;
+    /**
      * Fetches the next sequence value for PostgreSQL and Oracle 
implementations.
      * Fetches the next sequence value for PostgreSQL and Oracle 
implementations.
      * Dispatches to [EMAIL PROTECTED] ezcPersistentNativeGenerator} for MySQL.
@@ -46,10 +52,13 @@
     {
         // We first had the native generator within here
         // For BC reasons we still allow to use the seq generator with MySQL.
-        if ( $db->getName() == "mysql" )
+        if ( $db->getName() === "mysql" || $db->getName() === "sqlite" )
         {
-            $native = new ezcPersistentNativeGenerator();
-            return $native->preSave( $def, $db, $q );
+            if ( $this->nativeGenerator === null )
+            {
+                $this->nativeGenerator = new ezcPersistentNativeGenerator();
+            }
+            return $this->nativeGenerator->preSave( $def, $db, $q );
         }
 
         if ( isset( $def->idProperty->generator->params["sequence"] ) )

-- 
svn-components mailing list
svn-components@lists.ez.no
http://lists.ez.no/mailman/listinfo/svn-components

Reply via email to