Author: Tobias Schlitt
Date: 2007-03-06 17:08:27 +0100 (Tue, 06 Mar 2007)
New Revision: 4724

Log:
- Fixed issue #10112: Lots of failures in PersistentObject tests with pgsql.
# With this: fixed quoting issues in the generators.

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

Modified: trunk/PersistentObject/src/generators/manual_generator.php
===================================================================
--- trunk/PersistentObject/src/generators/manual_generator.php  2007-03-06 
15:56:05 UTC (rev 4723)
+++ trunk/PersistentObject/src/generators/manual_generator.php  2007-03-06 
16:08:27 UTC (rev 4724)
@@ -38,7 +38,7 @@
 
         // check if there is an object with this id already
         $q = $db->createSelectQuery();
-        $q->select( '*' )->from( $def->table )
+        $q->select( '*' )->from( $db->quoteIdentifier( $def->table ) )
             ->where( $q->expr->eq( $db->quoteIdentifier( 
$def->idProperty->columnName ),
                                    $q->bindValue( $this->id ) ) );
         try

Modified: trunk/PersistentObject/src/generators/sequence_generator.php
===================================================================
--- trunk/PersistentObject/src/generators/sequence_generator.php        
2007-03-06 15:56:05 UTC (rev 4723)
+++ trunk/PersistentObject/src/generators/sequence_generator.php        
2007-03-06 16:08:27 UTC (rev 4724)
@@ -44,16 +44,24 @@
      */
     public function preSave( ezcPersistentObjectDefinition $def, ezcDbHandler 
$db, ezcQueryInsert $q )
     {
+        // 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" )
         {
             $native = new ezcPersistentNativeGenerator();
             return $native->preSave( $def, $db, $q );
         }
-        if ( ( $db->getName() == 'pgsql' || $db->getName() == 'oracle' ) &&
-            array_key_exists( 'sequence', $def->idProperty->generator->params 
) )
+
+        if ( isset( $def->idProperty->generator->params["sequence"] ) )
         {
-            $seq = $def->idProperty->generator->params['sequence'];
-            $q->set( $def->idProperty->columnName, "nextval('{$seq}')" );
+            $seq = $def->idProperty->generator->params["sequence"];
+            switch ( $db->getName() )
+            {
+                case "pgsql":
+                case "oracle":
+                    $q->set( $db->quoteIdentifier( 
$def->idProperty->columnName ), "nextval(" . $db->quote( $db->quoteIdentifier( 
$seq ) ) . ")" );
+                    break;
+            }
         }
     }
 
@@ -77,7 +85,7 @@
         if ( array_key_exists( 'sequence', $def->idProperty->generator->params 
) &&
             $def->idProperty->generator->params['sequence'] !== null )
         {
-            $id = (int)$db->lastInsertId( 
$def->idProperty->generator->params['sequence'] );
+            $id = (int)$db->lastInsertId( $db->quoteIdentifier( 
$def->idProperty->generator->params['sequence'] ) );
         }
         else
         {

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

Reply via email to