summaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/test/sql/binary.pgc
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2019-01-30 10:36:53 +0100
committerMichael Meskes <meskes@postgresql.org>2019-01-30 10:39:32 +0100
commite2f731cdba9b7a79cddc64325990a8f51818877b (patch)
treef38d5703c00e454bc28d4afdb137ea4585f2985c /src/interfaces/ecpg/test/sql/binary.pgc
parent5c04630ad05e6e33bc18a6846b4086f9794d99e8 (diff)
Make some ecpg test cases more robust against unexpected errors that happen
during development. Test cases themselves should not hang or segfault.
Diffstat (limited to 'src/interfaces/ecpg/test/sql/binary.pgc')
-rw-r--r--src/interfaces/ecpg/test/sql/binary.pgc56
1 files changed, 9 insertions, 47 deletions
diff --git a/src/interfaces/ecpg/test/sql/binary.pgc b/src/interfaces/ecpg/test/sql/binary.pgc
index 7cc77d2e32e..1f6abd16384 100644
--- a/src/interfaces/ecpg/test/sql/binary.pgc
+++ b/src/interfaces/ecpg/test/sql/binary.pgc
@@ -13,6 +13,8 @@ struct TBempl
};
EXEC SQL END DECLARE SECTION;
+EXEC SQL WHENEVER SQLERROR STOP;
+
int
main (void)
{
@@ -27,43 +29,13 @@ main (void)
empl.idnum = 1;
EXEC SQL connect to REGRESSDB1;
- if (sqlca.sqlcode)
- {
- printf ("connect error = %ld\n", sqlca.sqlcode);
- exit (sqlca.sqlcode);
- }
-
EXEC SQL set bytea_output = escape;
- if (sqlca.sqlcode)
- {
- printf ("set bytea_output error = %ld\n", sqlca.sqlcode);
- exit (sqlca.sqlcode);
- }
-
EXEC SQL create table empl
(idnum integer, name char (20), accs smallint, byte bytea);
- if (sqlca.sqlcode)
- {
- printf ("create error = %ld\n", sqlca.sqlcode);
- exit (sqlca.sqlcode);
- }
-
EXEC SQL insert into empl values (1, 'first user', 320, :data);
- if (sqlca.sqlcode)
- {
- printf ("insert error = %ld\n", sqlca.sqlcode);
- exit (sqlca.sqlcode);
- }
-
EXEC SQL DECLARE C CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum;
EXEC SQL OPEN C;
EXEC SQL FETCH C INTO:empl.name,:empl.accs,:empl.byte;
- if (sqlca.sqlcode)
- {
- printf ("fetch error = %ld\n", sqlca.sqlcode);
- exit (sqlca.sqlcode);
- }
-
printf ("name=%s, accs=%d byte=%s\n", empl.name, empl.accs, empl.byte);
EXEC SQL CLOSE C;
@@ -72,12 +44,6 @@ main (void)
EXEC SQL DECLARE B BINARY CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum;
EXEC SQL OPEN B;
EXEC SQL FETCH B INTO :empl.name,:empl.accs,:empl.byte;
- if (sqlca.sqlcode)
- {
- printf ("fetch error = %ld\n", sqlca.sqlcode);
- exit (sqlca.sqlcode);
- }
-
EXEC SQL CLOSE B;
/* do not print a.accs because big/little endian will have different outputs here */
@@ -89,19 +55,15 @@ main (void)
EXEC SQL DECLARE A BINARY CURSOR FOR select byte from empl where idnum =:empl.idnum;
EXEC SQL OPEN A;
EXEC SQL FETCH A INTO :pointer;
- if (sqlca.sqlcode)
- {
- printf ("fetch error = %ld\n", sqlca.sqlcode);
- exit (sqlca.sqlcode);
- }
-
EXEC SQL CLOSE A;
- printf ("pointer=");
- for (i=0; i<4; i++)
- printf("(%o)", (unsigned char)pointer[i]);
- printf("\n");
- free(pointer);
+ if (pointer) {
+ printf ("pointer=");
+ for (i=0; i<4; i++)
+ printf("(%o)", (unsigned char)pointer[i]);
+ printf("\n");
+ free(pointer);
+ }
EXEC SQL disconnect;
exit (0);