Implements support for MySQL Transactions. Mantis #19137. Patch by Ludo Brands.

git-svn-id: trunk@22598 -
This commit is contained in:
lacak 2012-10-09 05:26:27 +00:00
parent 6eade12d3f
commit d0fbfe4525

View File

@ -1111,27 +1111,51 @@ end;
function TConnectionName.Commit(trans: TSQLHandle): boolean; function TConnectionName.Commit(trans: TSQLHandle): boolean;
begin begin
// Do nothing. //mysql_commit(FMySQL);
Result := mysql_query(FMySQL, 'COMMIT') = 0;
if not Result then
MySQLError(FMySQL, SErrExecuting, Self);
end; end;
function TConnectionName.RollBack(trans: TSQLHandle): boolean; function TConnectionName.RollBack(trans: TSQLHandle): boolean;
begin begin
// Do nothing //mysql_rollback(FMySQL);
Result := mysql_query(FMySQL, 'ROLLBACK') = 0;
if not Result then
MySQLError(FMySQL, SErrExecuting, Self);
end; end;
function TConnectionName.StartdbTransaction(trans: TSQLHandle; AParams : string): boolean; function TConnectionName.StartdbTransaction(trans: TSQLHandle; AParams : string): boolean;
begin begin
// Do nothing Result := mysql_query(FMySQL, 'START TRANSACTION') = 0;
if not Result then
MySQLError(FMySQL, SErrExecuting, Self);
end; end;
procedure TConnectionName.CommitRetaining(trans: TSQLHandle); procedure TConnectionName.CommitRetaining(trans: TSQLHandle);
begin begin
// Do nothing {$IFDEF MYSQL50_UP}
if mysql_query(FMySQL, 'COMMIT AND CHAIN') <> 0 then
MySQLError(FMySQL, SErrExecuting, Self);
{$ELSE}
if mysql_query(FMySQL, 'COMMIT') <> 0 then
MySQLError(FMySQL, SErrExecuting, Self);
if mysql_query(FMySQL, 'START TRANSACTION') <> 0 then
MySQLError(FMySQL, SErrExecuting, Self);
{$ENDIF}
end; end;
procedure TConnectionName.RollBackRetaining(trans: TSQLHandle); procedure TConnectionName.RollBackRetaining(trans: TSQLHandle);
begin begin
// Do nothing {$IFDEF MYSQL50_UP}
if mysql_query(FMySQL, 'ROLLBACK AND CHAIN') <> 0 then
MySQLError(FMySQL, SErrExecuting, Self);
{$ELSE}
if mysql_query(FMySQL, 'ROLLBACK') <> 0 then
MySQLError(FMySQL, SErrExecuting, Self);
if mysql_query(FMySQL, 'START TRANSACTION') <> 0 then
MySQLError(FMySQL, SErrExecuting, Self);
{$ENDIF}
end; end;
function TConnectionName.GetSchemaInfoSQL(SchemaType: TSchemaType; function TConnectionName.GetSchemaInfoSQL(SchemaType: TSchemaType;