vacuum from ecpg
The following program produces the output below...
It is built with:
vrfy_prob: vrfy_prob.cpg
/usr/local/pgsql/bin/ecpg -I/usr/local/pgsql/include -o vrfy_prob.c vrfy_prob.cpg
gcc -g${DEBUG} -I/usr/include/pgsql -o vrfy_prob -lm -lc -lecpg -lpq vrfy_prob.c
I am not using a BEGIN/END block, though the error messages indicate
that I am.
How can I do a vacuum analyze from within embedded sql in a c program
that works?
Thanks for your help!
Lynn Tilby
ltilby@asu.edu
******************************* PROGRAM ********************************
#include <stdlib.h>
#include <ctype.h>
EXEC SQL INCLUDE sqlca; /* include the sql debugging stuff... */
/********* !!!!!!!!!! POSTGRES SQL DEBUGGING STRUCTURE FIELDS ************/
#define DEBUG_SQL printf("sqlcaid = %s\n", sqlca.sqlcaid); printf("sqlabc =
%f\n", sqlca.sqlabc); printf("sqlcode = %f\n", sqlca.sqlcode);
printf("sqlca.sqlerrm.sqlerrml = %d\n", sqlca.sqlerrm.sqlerrml);
printf("sqlca.sqlerrm.sqlerrmc = %s\n", sqlca.sqlerrm.sqlerrmc); printf("sqlerrp
= %s\n", sqlca.sqlerrp); printf("sqlerrd = %f\n", sqlca.sqlerrd); printf("sqlext
= %s\n", sqlca.sqlext);
int main()
{
EXEC SQL BEGIN DECLARE SECTION; /* declare the variables used by sql */
EXEC SQL END DECLARE SECTION; /* declare the variables used by sql */
EXEC SQL CONNECT TO pma;
EXEC SQL WHENEVER sqlerror sqlprint; /* turn on verbose sql error ckg */
DEBUG_SQL
EXEC SQL VACUUM ANALYZE optn_cent_xref;
DEBUG_SQL
}
******************************* OUTPUT ********************************
[lynn@polaris strdl_sim]$ ./vrfy_prob
sqlcaid = SQLCA �
sqlabc = -1.998680
sqlcode = -1.998680
sqlca.sqlerrm.sqlerrml = 0
sqlca.sqlerrm.sqlerrmc =
sqlerrp = NOT SET
sqlerrd = -1.998680
sqlext =
sql error Postgres error: ERROR: VACUUM cannot run inside a BEGIN/END block
line 23.
sqlcaid = SQLCA �
sqlabc = -1.998680
sqlcode = -1.998681
sqlca.sqlerrm.sqlerrml = 76
sqlca.sqlerrm.sqlerrmc = Postgres error: ERROR: VACUUM cannot run inside a
BEGIN/END block
line 23.
sqlerrp = 23.
sqlerrd = -1.998680
sqlext =
[lynn@polaris strdl_sim]$
On Sat, Nov 15, 2003 at 11:31:08PM -0500, Bruce Momjian wrote:
I might be wrong on this but I think that ecpg using transactions by
default for each query.
Perhaps turning on autocommit?Yep, use:
EXEC SQL SET AUTOCOMMIT = ON;
Or use 'ecpg -t'.
Michael
--
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!
Import Notes
Reply to msg id not found: 200311160431.hAG4V8308968@candle.pha.pa.usReference msg id not found: 3FB68F79.9090808@commandprompt.comReference msg id not found: 200311160431.hAG4V8308968@candle.pha.pa.us | Resolved by subject fallback
Hello,
I might be wrong on this but I think that ecpg using transactions by
default for each query.
Perhaps turning on autocommit?
J
Lynn.Tilby@asu.edu wrote:
The following program produces the output below...
It is built with:vrfy_prob: vrfy_prob.cpg
/usr/local/pgsql/bin/ecpg -I/usr/local/pgsql/include -o vrfy_prob.c vrfy_prob.cpg
gcc -g${DEBUG} -I/usr/include/pgsql -o vrfy_prob -lm -lc -lecpg -lpq vrfy_prob.cI am not using a BEGIN/END block, though the error messages indicate
that I am.How can I do a vacuum analyze from within embedded sql in a c program
that works?Thanks for your help!
Lynn Tilby
ltilby@asu.edu******************************* PROGRAM ********************************
#include <stdlib.h>
#include <ctype.h>EXEC SQL INCLUDE sqlca; /* include the sql debugging stuff... */
/********* !!!!!!!!!! POSTGRES SQL DEBUGGING STRUCTURE FIELDS ************/
#define DEBUG_SQL printf("sqlcaid = %s\n", sqlca.sqlcaid); printf("sqlabc =
%f\n", sqlca.sqlabc); printf("sqlcode = %f\n", sqlca.sqlcode);
printf("sqlca.sqlerrm.sqlerrml = %d\n", sqlca.sqlerrm.sqlerrml);
printf("sqlca.sqlerrm.sqlerrmc = %s\n", sqlca.sqlerrm.sqlerrmc); printf("sqlerrp
= %s\n", sqlca.sqlerrp); printf("sqlerrd = %f\n", sqlca.sqlerrd); printf("sqlext
= %s\n", sqlca.sqlext);int main()
{EXEC SQL BEGIN DECLARE SECTION; /* declare the variables used by sql */
EXEC SQL END DECLARE SECTION; /* declare the variables used by sql */
EXEC SQL CONNECT TO pma;
EXEC SQL WHENEVER sqlerror sqlprint; /* turn on verbose sql error ckg */DEBUG_SQL
EXEC SQL VACUUM ANALYZE optn_cent_xref;
DEBUG_SQL
}******************************* OUTPUT ********************************
[lynn@polaris strdl_sim]$ ./vrfy_prob
sqlcaid = SQLCA Œ
sqlabc = -1.998680
sqlcode = -1.998680
sqlca.sqlerrm.sqlerrml = 0
sqlca.sqlerrm.sqlerrmc =
sqlerrp = NOT SET
sqlerrd = -1.998680
sqlext =
sql error Postgres error: ERROR: VACUUM cannot run inside a BEGIN/END block
line 23.
sqlcaid = SQLCA Œ
sqlabc = -1.998680
sqlcode = -1.998681
sqlca.sqlerrm.sqlerrml = 76
sqlca.sqlerrm.sqlerrmc = Postgres error: ERROR: VACUUM cannot run inside a
BEGIN/END block
line 23.
sqlerrp = 23.
sqlerrd = -1.998680
sqlext =
[lynn@polaris strdl_sim]$---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings
--
Command Prompt, Inc., home of Mammoth PostgreSQL - S/ODBC - S/JDBC
Postgresql support, programming, shared hosting and dedicated hosting.
+1-503-222-2783 - jd@commandprompt.com - http://www.commandprompt.com
PostgreSQL.Org - Editor-N-Chief - http://www.postgresql.org
Joshua D. Drake wrote:
Hello,
I might be wrong on this but I think that ecpg using transactions by
default for each query.
Perhaps turning on autocommit?
Yep, use:
EXEC SQL SET AUTOCOMMIT = ON;
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073