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