mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-12 22:38:52 +00:00
Fixed various transaction related issues and changed mssql-odbc name to ... mssql-odbc, hopefully this hasn't been (and won't be) responsible for any problems ...
git-svn-id: file:///svn/phpbb/trunk@2269 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
be2532588c
commit
28b38f0547
5 changed files with 99 additions and 29 deletions
|
@ -94,7 +94,7 @@ class sql_db
|
||||||
{
|
{
|
||||||
$this->num_queries++;
|
$this->num_queries++;
|
||||||
|
|
||||||
if( $transaction == BEGIN_TRANSACTION )
|
if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
|
||||||
{
|
{
|
||||||
if( !odbc_autocommit($this->db_connect_id, false) )
|
if( !odbc_autocommit($this->db_connect_id, false) )
|
||||||
{
|
{
|
||||||
|
@ -195,16 +195,35 @@ class sql_db
|
||||||
|
|
||||||
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
||||||
{
|
{
|
||||||
odbc_commit($this->db_connect_id);
|
|
||||||
odbc_autocommit($this->db_connect_id, true);
|
|
||||||
$this->in_transaction = FALSE;
|
$this->in_transaction = FALSE;
|
||||||
|
|
||||||
|
if ( !@odbc_commit($this->db_connect_id) )
|
||||||
|
{
|
||||||
|
odbc_rollback($this->db_connect_id);
|
||||||
|
odbc_autocommit($this->db_connect_id, true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
odbc_autocommit($this->db_connect_id, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->result;
|
return $this->result;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return false;
|
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
||||||
|
{
|
||||||
|
$this->in_transaction = FALSE;
|
||||||
|
|
||||||
|
if ( !@odbc_commit($this->db_connect_id) )
|
||||||
|
{
|
||||||
|
odbc_rollback($this->db_connect_id);
|
||||||
|
odbc_autocommit($this->db_connect_id, true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
odbc_autocommit($this->db_connect_id, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
if(!defined("SQL_LAYER"))
|
if(!defined("SQL_LAYER"))
|
||||||
{
|
{
|
||||||
|
|
||||||
define("SQL_LAYER","mssql");
|
define("SQL_LAYER","mssql-odbc");
|
||||||
|
|
||||||
class sql_db
|
class sql_db
|
||||||
{
|
{
|
||||||
|
@ -93,7 +93,7 @@ class sql_db
|
||||||
{
|
{
|
||||||
$this->num_queries++;
|
$this->num_queries++;
|
||||||
|
|
||||||
if( $transaction == BEGIN_TRANSACTION )
|
if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
|
||||||
{
|
{
|
||||||
if( !odbc_autocommit($this->db_connect_id, false) )
|
if( !odbc_autocommit($this->db_connect_id, false) )
|
||||||
{
|
{
|
||||||
|
@ -190,9 +190,15 @@ class sql_db
|
||||||
|
|
||||||
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
||||||
{
|
{
|
||||||
odbc_commit($this->db_connect_id);
|
|
||||||
odbc_autocommit($this->db_connect_id, true);
|
|
||||||
$this->in_transaction = FALSE;
|
$this->in_transaction = FALSE;
|
||||||
|
|
||||||
|
if ( !odbc_commit($this->db_connect_id) )
|
||||||
|
{
|
||||||
|
odbc_rollback($this->db_connect_id);
|
||||||
|
odbc_autocommit($this->db_connect_id, true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
odbc_autocommit($this->db_connect_id, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
odbc_free_result($this->result);
|
odbc_free_result($this->result);
|
||||||
|
@ -201,7 +207,20 @@ class sql_db
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return false;
|
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
||||||
|
{
|
||||||
|
$this->in_transaction = FALSE;
|
||||||
|
|
||||||
|
if ( !@odbc_commit($this->db_connect_id) )
|
||||||
|
{
|
||||||
|
odbc_rollback($this->db_connect_id);
|
||||||
|
odbc_autocommit($this->db_connect_id, true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
odbc_autocommit($this->db_connect_id, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -100,13 +100,13 @@ class sql_db
|
||||||
unset($this->result);
|
unset($this->result);
|
||||||
unset($this->row);
|
unset($this->row);
|
||||||
|
|
||||||
if( $query != "" )
|
if ( $query != "" )
|
||||||
{
|
{
|
||||||
$this->num_queries++;
|
$this->num_queries++;
|
||||||
|
|
||||||
if($transaction == BEGIN_TRANSACTION)
|
if ( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
|
||||||
{
|
{
|
||||||
if( !mssql_query("BEGIN TRANSACTION", $this->db_connect_id) )
|
if ( !mssql_query("BEGIN TRANSACTION", $this->db_connect_id) )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -196,12 +196,32 @@ class sql_db
|
||||||
|
|
||||||
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
||||||
{
|
{
|
||||||
mssql_query("COMMIT", $this->db_connect_id);
|
|
||||||
$this->in_transaction = FALSE;
|
$this->in_transaction = FALSE;
|
||||||
|
|
||||||
|
if( !@mssql_query("COMMIT", $this->db_connect_id) )
|
||||||
|
{
|
||||||
|
@mssql_query("ROLLBACK", $this->db_connect_id);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->result;
|
return $this->result;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
||||||
|
{
|
||||||
|
$this->in_transaction = FALSE;
|
||||||
|
|
||||||
|
if( !@mssql_query("COMMIT", $this->db_connect_id) )
|
||||||
|
{
|
||||||
|
@mssql_query("ROLLBACK", $this->db_connect_id);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -105,7 +105,7 @@ class sql_db
|
||||||
if( $query != "" )
|
if( $query != "" )
|
||||||
{
|
{
|
||||||
$this->num_queries++;
|
$this->num_queries++;
|
||||||
if( $transaction == BEGIN_TRANSACTION )
|
if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
|
||||||
{
|
{
|
||||||
$result = mysql_query("BEGIN", $this->db_connect_id);
|
$result = mysql_query("BEGIN", $this->db_connect_id);
|
||||||
if(!$result)
|
if(!$result)
|
||||||
|
@ -117,15 +117,28 @@ class sql_db
|
||||||
|
|
||||||
$this->query_result = mysql_query($query, $this->db_connect_id);
|
$this->query_result = mysql_query($query, $this->db_connect_id);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
||||||
|
{
|
||||||
|
$result = mysql_query("COMMIT", $this->db_connect_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( $this->query_result )
|
if( $this->query_result )
|
||||||
{
|
{
|
||||||
unset($this->row[$this->query_result]);
|
unset($this->row[$this->query_result]);
|
||||||
unset($this->rowset[$this->query_result]);
|
unset($this->rowset[$this->query_result]);
|
||||||
|
|
||||||
if( $transaction == END_TRANSACTION )
|
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
||||||
{
|
{
|
||||||
$result = mysql_query("COMMIT", $this->db_connect_id);
|
$this->in_transaction = FALSE;
|
||||||
|
|
||||||
|
if ( !mysql_query("COMMIT", $this->db_connect_id) )
|
||||||
|
{
|
||||||
|
mysql_query("ROLLBACK", $this->db_connect_id);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->query_result;
|
return $this->query_result;
|
||||||
|
|
|
@ -109,7 +109,6 @@ class sql_db
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Query method
|
// Query method
|
||||||
//
|
//
|
||||||
|
@ -125,14 +124,14 @@ class sql_db
|
||||||
|
|
||||||
$query = preg_replace("/LIMIT ([0-9]+),([ 0-9]+)/", "LIMIT \\2 OFFSET \\1", $query);
|
$query = preg_replace("/LIMIT ([0-9]+),([ 0-9]+)/", "LIMIT \\2 OFFSET \\1", $query);
|
||||||
|
|
||||||
if( $transaction == BEGIN_TRANSACTION )
|
if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
|
||||||
{
|
{
|
||||||
$result = @pg_exec($this->db_connect_id, "BEGIN");
|
$this->in_transaction = TRUE;
|
||||||
if( !$result )
|
|
||||||
|
if( !@pg_exec($this->db_connect_id, "BEGIN") )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->in_transaction = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->query_result = @pg_exec($this->db_connect_id, $query);
|
$this->query_result = @pg_exec($this->db_connect_id, $query);
|
||||||
|
@ -140,13 +139,13 @@ class sql_db
|
||||||
{
|
{
|
||||||
if( $transaction == END_TRANSACTION )
|
if( $transaction == END_TRANSACTION )
|
||||||
{
|
{
|
||||||
$result = @pg_exec($this->db_connect_id, "COMMIT");
|
$this->in_transaction = FALSE;
|
||||||
if( !$result )
|
|
||||||
|
if( !@pg_exec($this->db_connect_id, "COMMIT") )
|
||||||
{
|
{
|
||||||
@pg_exec($this->db_connect_id, "ROLLBACK");
|
@pg_exec($this->db_connect_id, "ROLLBACK");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->in_transaction = FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->last_query_text[$this->query_result] = $query;
|
$this->last_query_text[$this->query_result] = $query;
|
||||||
|
@ -170,18 +169,18 @@ class sql_db
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( $transaction == END_TRANSACTION )
|
if( $transaction == END_TRANSACTION && $this->in_transaction )
|
||||||
{
|
{
|
||||||
$result = @pg_exec($this->db_connect_id, "COMMIT");
|
$this->in_transaction = FALSE;
|
||||||
if( !$result )
|
|
||||||
|
if( !@pg_exec($this->db_connect_id, "COMMIT") )
|
||||||
{
|
{
|
||||||
@pg_exec($this->db_connect_id, "ROLLBACK");
|
@pg_exec($this->db_connect_id, "ROLLBACK");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->in_transaction = FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue