Skip to content

Commit

Permalink
Fixed some of the Connection tests for SQLServer
Browse files Browse the repository at this point in the history
  • Loading branch information
lorenzo committed Apr 12, 2014
1 parent 6b2ff0f commit 3bf580d
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 9 deletions.
30 changes: 30 additions & 0 deletions src/Database/Dialect/SqlserverDialectTrait.php
Expand Up @@ -146,4 +146,34 @@ public function schemaDialect() {
return new \Cake\Database\Schema\SqlserverSchema($this);
}

/**
* Returns a SQL snippet for creating a new transaction savepoint
*
* @param string $name save point name
* @return string
*/
public function savePointSQL($name) {
return 'SAVE TRANSACTION t' . $name;
}

/**
* Returns a SQL snippet for releasing a previously created save point
*
* @param string $name save point name
* @return string
*/
public function releaseSavePointSQL($name) {
return 'COMMIT TRANSACTION t' . $name;
}

/**
* Returns a SQL snippet for rollbacking a previously created save point
*
* @param string $name save point name
* @return string
*/
public function rollbackSavePointSQL($name) {
return 'ROLLBACK TRANSACTION t' . $name;
}

}
17 changes: 16 additions & 1 deletion src/Database/Driver/Sqlserver.php
Expand Up @@ -17,6 +17,7 @@
namespace Cake\Database\Driver;

use Cake\Database\Dialect\SqlserverDialectTrait;
use Cake\Database\Statement\PDOStatement;
use PDO;

class Sqlserver extends \Cake\Database\Driver {
Expand All @@ -31,7 +32,7 @@ class Sqlserver extends \Cake\Database\Driver {
*/
protected $_baseConfig = [
'persistent' => true,
'host' => 'localhost',
'host' => 'localhost\SQLEXPRESS',
'login' => '',
'password' => '',
'database' => 'cake',
Expand Down Expand Up @@ -77,6 +78,7 @@ public function connect() {
$connection->exec("SET {$key} {$value}");
}
}

return true;
}

Expand All @@ -90,4 +92,17 @@ public function enabled() {
return in_array('sqlsrv', PDO::getAvailableDrivers());
}


/**
* Prepares a sql statement to be executed
*
* @param string|\Cake\Database\Query $query
* @return \Cake\Database\StatementInterface
*/
public function prepare($query) {
$this->connect();
$statement = $this->_connection->prepare((string)$query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
return $this->_old = new PDOStatement($statement, $this);
}

}
9 changes: 1 addition & 8 deletions tests/TestCase/Database/ConnectionTest.php
Expand Up @@ -171,18 +171,11 @@ public function testExecuteWithArguments() {
* @return void
**/
public function testExecuteWithArgumentsAndTypes() {
$sql = "SELECT ? = '2012-01-01'";
$sql = "SELECT '2012-01-01' = ?";
$statement = $this->connection->execute($sql, [new \DateTime('2012-01-01')], ['date']);
$result = $statement->fetch();
$statement->closeCursor();
$this->assertTrue((bool)$result[0]);

$sql = "SELECT ? = '2012-01-01', ? = '2000-01-01 10:10:10', ? = 2";
$params = [new \DateTime('2012-01-01 10:10:10'), '2000-01-01 10:10:10', 2.1];
$statement = $this->connection->execute($sql, $params, ['date', 'string', 'integer']);
$result = $statement->fetch();
$statement->closeCursor();
$this->assertEquals($result, array_filter($result));
}

/**
Expand Down

0 comments on commit 3bf580d

Please sign in to comment.