Req #58600 [Opn->Csd]: Support for transactions -mssql
| From: | ssufficool@php.net | Date: | Thu, 01 Dec 2011 05:38:26 +0000 |
| Subject: | Req #58600 [Opn->Csd]: Support for transactions -mssql | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-165605@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=58600&edit=1
ID: 58600
Updated by: ssufficool@php.net
Reported by: sigurdne at online dot no
Summary: Support for transactions -mssql
-Status: Open
+Status: Closed
Type: Feature/Change Request
-Package: PDO_DBLIB
+Package: *General Issues
Operating System: Ubuntu 8.10
PHP Version: 5.2.6
-Assigned To:
+Assigned To: ssufficool
Block user comment: N
Private report: N
New Comment:
Thank you for your bug report. This issue has already been fixed
in the latest released version of PHP, which you can download at
http://www.php.net/downloads.php
Try 5.4 RC2
Previous Comments:
------------------------------------------------------------------------
[2009-03-30 02:26:16] sigurdne at online dot no
By looking at the pdo_mysql - it looks like something like this could work.
However there seems to be a problem that the transaction state is not reported correctly - so when
it comes to the commit - it claims that it is not in a transaction.
Anyone that could help out?
diff -aburN --exclude='.svn*' --exclude='CVS*' PDO_DBLIB-1.0.org/dblib_driver.c
PDO_DBLIB-1.0/dblib_driver.c
--- PDO_DBLIB-1.0.org/dblib_driver.c 2005-10-16 16:58:50.000000000 +0200
+++ PDO_DBLIB-1.0/dblib_driver.c 2009-03-27 13:10:14.000000000 +0100
@@ -166,14 +166,30 @@
return 1;
}
+static int dblib_handle_begin(pdo_dbh_t *dbh TSRMLS_DC)
+{
+ return 0 <= dblib_handle_doer(dbh, ZEND_STRL("BEGIN TRAN") TSRMLS_CC);
+}
+
+static int dblib_handle_commit(pdo_dbh_t *dbh TSRMLS_DC)
+{
+ return 0 <= dblib_handle_doer(dbh, ZEND_STRL("COMMIT TRAN") TSRMLS_CC);
+}
+
+static int dblib_handle_rollback(pdo_dbh_t *dbh TSRMLS_DC)
+{
+ return 0 <= dblib_handle_doer(dbh, ZEND_STRL("ROLLBACK TRAN") TSRMLS_CC);
+}
+
+
static struct pdo_dbh_methods dblib_methods = {
dblib_handle_closer,
dblib_handle_preparer,
dblib_handle_doer,
dblib_handle_quoter,
- NULL,
- NULL,
- NULL,
+ dblib_handle_begin,
+ dblib_handle_commit,
+ dblib_handle_rollback,
NULL,
NULL, /* last insert */
dblib_fetch_error, /* fetch error */
------------------------------------------------------------------------
[2009-03-27 04:57:32] sigurdne at online dot no
Description:
------------
Would be nice to support transactions for mssql.
Tried both the precompiled ubuntu packages and custom built from pecl with the same result:
'This driver doesn't support transactions'
Cutom built:
versions:
* PDO-1.0.3
* PDO_DBLIB-1.0
* FreeTDS 0.82
To allow configure to work:
$ touch /usr/include/tds.h
$ touch /usr/lib/libtds.a
configure:
$ ./configure --with-mssql
Reproduce code:
---------------
$this->db = new PDO("dblib:host={$this->Host};dbname={$this->Database}",
$this->User, $this->Password, array(PDO::ATTR_PERSISTENT => $persistent));
$this->db->beginTransaction();
Actual result:
--------------
Error message: 'This driver doesn't support transactions'
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=58600&edit=1