Dňa 16.5.2015 o 19:19 silvioprog napísal(a):
On Sat, May 16, 2015 at 1:51 PM, Michael Van Canneyt <mich...@freepascal.org <mailto:mich...@freepascal.org>> wrote:

    On Sat, 16 May 2015, silvioprog wrote:

        [...]

    Set the stoUseImplicit option on the transaction:

    VCon.Transaction.options:=[stoUseImplicit]


Thanks for the fast reply buddy.

I have another problem: my FPC version is 2.6.4, and this option is not available in this version. =/

But just to test, I did it using FPC from trunk, and the following code returned another error:

[code]
var
  VCon: TPQConnection;
begin
  VCon := TPQConnection.Create(nil);
  VCon.Transaction := TSQLTransaction.Create(VCon);
  try
VCon.Transaction.Options := VCon.Transaction.Options + [stoUseImplicit];
    VCon.HostName := '127.0.0.1';
    VCon.DatabaseName := 'postgres';
    VCon.UserName := 'postgres';
    VCon.Password := 'postgres';
    VCon.ExecuteDirect(
      'CREATE DATABASE "09_0025" WITH ENCODING=''UTF8'' ' +
      '  OWNER="postgres" TEMPLATE="template1" ' +
      '  LC_COLLATE=''English_United States.1252'' ' +
      '  LC_CTYPE=''English_United States.1252'' '+
      '  CONNECTION LIMIT=-1 TABLESPACE="pg_default"');
  finally
    VCon.Free;
  end;
end;
[/code]

Error:

#0 PQCONNECTION$_$TPQTRANS_$__$$_REGISTERCURSOR$TPQCURSOR at :0
#1 PQCONNECTION$_$TPQCONNECTION_$__$$_EXECUTE$TSQLCURSOR$TSQLTRANSACTION$TPARAMS at :0 #2 SQLDB$_$TSQLCONNECTION_$__$$_EXECUTEDIRECT$ANSISTRING$TSQLTRANSACTION at :0
#3 SQLDB$_$TSQLCONNECTION_$__$$_EXECUTEDIRECT$ANSISTRING at :0
#4 TFORM1__BUTTON1CLICK(0x1dc248, <error reading variable>) at Unit1.pas:45
...
Probably fixed in rev.30920
ExecuteDirect did not called StartImpicitTransaction, which leaves Transaction.Handle nil, which later leads to AV, when PQConnection uses transaction handle to register cursor during statement preparation.
-Laco.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to