# Source for file Pgsql.php

Documentation is available at Pgsql.php

1. <?php
2. /*
3. * $Id: Pgsql.php 1269 2007-04-18 08:59:10Z zYne $
4. *
5. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16. *
17. * This software consists of voluntary contributions made by many individuals
18. * and is licensed under the LGPL. For more information, see
19. * <http://www.phpdoctrine.com>.
20. */
21. Doctrine::autoload('Doctrine_Transaction');
22. /**
23. *
24. * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
25. * @author Paul Cooper <pgc@ucecom.com> (PEAR MDB2 Pgsql driver)
26. * @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
27. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
28. * @package Doctrine
29. * @category Object Relational Mapping
30. * @link www.phpdoctrine.com
31. * @since 1.0
32. * @version $Revision: 1269 $
33. */
34. class Doctrine_Transaction_Pgsql extends Doctrine_Transaction
35. {
36. /**
37. * createSavepoint
38. * creates a new savepoint
39. *
40. * @param string $savepoint name of a savepoint to set
41. * @return void
42. */
43. protected function createSavePoint($savepoint)
44. {
45. $query = 'SAVEPOINT ' . $savepoint;
47. return $this->conn->execute($query);
48. }
49. /**
50. * releaseSavePoint
51. * releases given savepoint
52. *
53. * @param string $savepoint name of a savepoint to release
54. * @return void
55. */
56. protected function releaseSavePoint($savepoint)
57. {
58. $query = 'RELEASE SAVEPOINT ' . $savepoint;
60. return $this->conn->execute($query);
61. }
62. /**
63. * rollbackSavePoint
64. * releases given savepoint
65. *
66. * @param string $savepoint name of a savepoint to rollback to
67. * @return void
68. */
69. protected function rollbackSavePoint($savepoint)
70. {
71. $query = 'ROLLBACK TO SAVEPOINT ' . $savepoint;
73. return $this->conn->execute($query);
74. }
75. /**
76. * Set the transacton isolation level.
77. *
78. * @param string standard isolation level
79. * READ UNCOMMITTED (allows dirty reads)
80. * READ COMMITTED (prevents dirty reads)
81. * REPEATABLE READ (prevents nonrepeatable reads)
82. * SERIALIZABLE (prevents phantom reads)
83. * @throws PDOException if something fails at the PDO level
84. * @throws Doctrine_Transaction_Exception if using unknown isolation level or unknown wait option
85. * @return void
86. */
87. public function setIsolation($isolation)
88. {
89. switch ($isolation) {
90. case 'READ UNCOMMITTED':
91. case 'READ COMMITTED':
92. case 'REPEATABLE READ':
93. case 'SERIALIZABLE':
94. break;
95. default:
96. throw new Doctrine_Transaction_Exception('Isolation level '.$isolation.' is not supported.');
97. }
99. $query = 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL ' . $isolation;
100. return $this->conn->execute($query);
101. }
102. }