Re: [fpc-pascal] Boring problem when I try to create a database using SQLdb (again)
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
Re: [fpc-pascal] Boring problem when I try to create a database using SQLdb (again)
On Sat, May 16, 2015 at 2:19 PM, silvioprog silviop...@gmail.com wrote: On Sat, May 16, 2015 at 1:51 PM, Michael Van Canneyt 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 ... Why methods like ExecuteDirectPG, CheckConnectionStatus, CheckResultError, TranslateFldType and GetExtendedFieldInfo are not declared as protected methods? No particular reason. That can be changed. Michael. Very nice. I can create a patch to move this methods to the protected area. =) Done: http://bugs.freepascal.org/view.php?id=28125 -- Silvio Clécio My public projects - github.com/silvioprog ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Boring problem when I try to create a database using SQLdb (again)
On Sat, 16 May 2015, silvioprog wrote: Hello, I need to create numbered databases like 09_0025, 09_0026 etc., that using any SQL tool like pgAdmin, I just execute this script, and it works fine: CREATE DATABASE 09_0025 WITH ENCODING='UTF-8' OWNER=postgres TEMPLATE=template1 LC_COLLATE='English_United States.1252' LC_CTYPE='English_United States.1252' CONNECTION LIMIT=-1 TABLESPACE=pg_default Notice that I need to specify some details, like ENCODING, OWNER, LC_COLLATE/LC_CTYPE etc., so the TPQConnection.CreateDB can't be used because it doesn't allows to configure those details. Another information before show my tests: this script above works fine in other libs like Zeos, UniDAC and JDBC, I tested it yesterday. Now, please see my tests and their respective errors. Test 1: [code] var VCon: TPQConnection; begin VCon := TPQConnection.Create(nil); try 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: Transaction not set. Test 2: [code] var VCon: TPQConnection; begin VCon := TPQConnection.Create(nil); VCon.Transaction := TSQLTransaction.Create(VCon); try 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: TPQConnection : Execution of query failed (PostgreSQL: ERROR: CREATE DATABASE cannot run inside a transaction block Severity: ERROR SQL State: 25001 Primary Error: CREATE DATABASE cannot run inside a transaction block). Set the stoUseImplicit option on the transaction: VCon.Transaction.options:=[stoUseImplicit] Why methods like ExecuteDirectPG, CheckConnectionStatus, CheckResultError, TranslateFldType and GetExtendedFieldInfo are not declared as protected methods? No particular reason. That can be changed. Michael.___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Boring problem when I try to create a database using SQLdb (again)
On Sat, May 16, 2015 at 1:51 PM, Michael Van Canneyt 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 ... Why methods like ExecuteDirectPG, CheckConnectionStatus, CheckResultError, TranslateFldType and GetExtendedFieldInfo are not declared as protected methods? No particular reason. That can be changed. Michael. Very nice. I can create a patch to move this methods to the protected area. =) -- Silvio Clécio My public projects - github.com/silvioprog ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal