aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2018-03-14 00:54:13 +0100
committerMichael Meskes <meskes@postgresql.org>2018-03-14 00:54:13 +0100
commit3b7ab4380440d7b14ee390fabf39f6d87d7491e2 (patch)
tree624029b996d00a119d97bc5f03d1b9ef21a16a5d /src/interfaces/ecpg/test/expected/compat_oracle-char_array.c
parentdb2fc801f66a70969cbdd5673ed9d02025c70695 (diff)
downloadpostgresql-3b7ab4380440d7b14ee390fabf39f6d87d7491e2.tar.gz
postgresql-3b7ab4380440d7b14ee390fabf39f6d87d7491e2.zip
Add Oracle like handling of char arrays.
In some cases Oracle Pro*C handles char array differently than ECPG. This patch adds a Oracle compatibility mode to make ECPG behave like Pro*C. Patch by David Rader <davidr@openscg.com>
Diffstat (limited to 'src/interfaces/ecpg/test/expected/compat_oracle-char_array.c')
-rw-r--r--src/interfaces/ecpg/test/expected/compat_oracle-char_array.c219
1 files changed, 219 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c b/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c
new file mode 100644
index 00000000000..21980cacf91
--- /dev/null
+++ b/src/interfaces/ecpg/test/expected/compat_oracle-char_array.c
@@ -0,0 +1,219 @@
+/* Processed by ecpg (regression mode) */
+/* These include files are added by the preprocessor */
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* End of automatic include section */
+#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
+
+#line 1 "char_array.pgc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+#line 1 "regression.h"
+
+
+
+
+
+
+#line 5 "char_array.pgc"
+
+
+static void warn();
+
+/* Compatible handling of char array to retrieve varchar field to char array
+ should be fixed-length, blank-padded, then null-terminated.
+ Conforms to the ANSI Fixed Character type. */
+
+int main() {
+
+ ECPGdebug(1, stderr);
+ { ECPGconnect(__LINE__, 3, "ecpg1_regression" , NULL, NULL , NULL, 0); }
+#line 16 "char_array.pgc"
+
+
+ /* exec sql whenever sql_warning do warn ( ) ; */
+#line 18 "char_array.pgc"
+
+ /* exec sql whenever sqlerror sqlprint ; */
+#line 19 "char_array.pgc"
+
+
+ const char *ppppp = "XXXXX";
+
+ /* exec sql begin declare section */
+
+
+
+
+
+#line 24 "char_array.pgc"
+ char shortstr [ 5 ] ;
+
+#line 25 "char_array.pgc"
+ char bigstr [ 11 ] ;
+
+#line 26 "char_array.pgc"
+ short shstr_ind = 0 ;
+
+#line 27 "char_array.pgc"
+ short bigstr_ind = 0 ;
+/* exec sql end declare section */
+#line 28 "char_array.pgc"
+
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "create table strdbase ( strval varchar ( 10 ) )", ECPGt_EOIT, ECPGt_EORT);
+#line 30 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 30 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 30 "char_array.pgc"
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "insert into strdbase values ( '' )", ECPGt_EOIT, ECPGt_EORT);
+#line 31 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 31 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 31 "char_array.pgc"
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "insert into strdbase values ( 'AB' )", ECPGt_EOIT, ECPGt_EORT);
+#line 32 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 32 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 32 "char_array.pgc"
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "insert into strdbase values ( 'ABCD' )", ECPGt_EOIT, ECPGt_EORT);
+#line 33 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 33 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 33 "char_array.pgc"
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "insert into strdbase values ( 'ABCDE' )", ECPGt_EOIT, ECPGt_EORT);
+#line 34 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 34 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 34 "char_array.pgc"
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "insert into strdbase values ( 'ABCDEF' )", ECPGt_EOIT, ECPGt_EORT);
+#line 35 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 35 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 35 "char_array.pgc"
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "insert into strdbase values ( 'ABCDEFGHIJ' )", ECPGt_EOIT, ECPGt_EORT);
+#line 36 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 36 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 36 "char_array.pgc"
+
+
+ /* declare C cursor for select strval , strval from strdbase */
+#line 38 "char_array.pgc"
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "declare C cursor for select strval , strval from strdbase", ECPGt_EOIT, ECPGt_EORT);
+#line 39 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 39 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 39 "char_array.pgc"
+
+
+ /* exec sql whenever not found break ; */
+#line 41 "char_array.pgc"
+
+
+ printf("Full Str. : Short Ind.\n");
+ while(1) {
+ strncpy(shortstr, ppppp, sizeof shortstr);
+ memset(bigstr, 0, sizeof bigstr);
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "fetch C", ECPGt_EOIT,
+ ECPGt_char,(bigstr),(long)11,(long)1,(11)*sizeof(char),
+ ECPGt_short,&(bigstr_ind),(long)1,(long)1,sizeof(short),
+ ECPGt_char,(shortstr),(long)5,(long)1,(5)*sizeof(char),
+ ECPGt_short,&(shstr_ind),(long)1,(long)1,sizeof(short), ECPGt_EORT);
+#line 47 "char_array.pgc"
+
+if (sqlca.sqlcode == ECPG_NOT_FOUND) break;
+#line 47 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 47 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 47 "char_array.pgc"
+
+ printf("\"%s\": \"%s\" %d\n", bigstr, shortstr, shstr_ind);
+ }
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "close cstr", ECPGt_EOIT, ECPGt_EORT);
+#line 51 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 51 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 51 "char_array.pgc"
+
+ { ECPGdo(__LINE__, 3, 1, NULL, 0, ECPGst_normal, "drop table strdbase", ECPGt_EOIT, ECPGt_EORT);
+#line 52 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 52 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 52 "char_array.pgc"
+
+
+ printf("\nGOOD-BYE!!\n\n");
+
+ { ECPGtrans(__LINE__, NULL, "commit work");
+#line 56 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 56 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 56 "char_array.pgc"
+
+
+ { ECPGdisconnect(__LINE__, "ALL");
+#line 58 "char_array.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') warn ( );
+#line 58 "char_array.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 58 "char_array.pgc"
+
+
+ return 0;
+}
+
+static void warn(void)
+{
+ fprintf(stderr, "Warning: At least one column was truncated\n");
+}