summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2020-11-07 21:25:42 +0000
committerTom Lane2020-11-07 21:25:42 +0000
commiteed4356fad84b0fd6e3caa49c7006f401159ac9a (patch)
tree8c895009729a5075bcd4b4d56b276fdb7cd45a57
parent1e3868ab3bef5cfa0f4d44a6937a880be7a3a482 (diff)
Avoid re-using output variables in new ecpg test case.
The buildfarm thinks this leads to memory stomps, though annoyingly I can't duplicate that here. The existing code in strings.pgc is doing something that doesn't seem to be sanctioned at all really by the documentation, but I'm disinclined to try to make that nicer right now. Let's just declare some more output variables in hopes of working around it.
-rw-r--r--src/interfaces/ecpg/test/expected/preproc-strings.c10
-rw-r--r--src/interfaces/ecpg/test/expected/preproc-strings.stderr4
-rw-r--r--src/interfaces/ecpg/test/preproc/strings.h4
-rw-r--r--src/interfaces/ecpg/test/preproc/strings.pgc4
4 files changed, 15 insertions, 7 deletions
diff --git a/src/interfaces/ecpg/test/expected/preproc-strings.c b/src/interfaces/ecpg/test/expected/preproc-strings.c
index 87662e0176..a26817968d 100644
--- a/src/interfaces/ecpg/test/expected/preproc-strings.c
+++ b/src/interfaces/ecpg/test/expected/preproc-strings.c
@@ -24,11 +24,13 @@
+
+
#line 5 "strings.pgc"
#line 1 "strings.h"
- char * s1 , * s2 , * s3 , * s4 , * s5 , * s6 ;
+ char * s1 , * s2 , * s3 , * s4 , * s5 , * s6 , * s7 , * s8 ;
/* exec sql end declare section */
#line 5 "strings.pgc"
@@ -64,14 +66,14 @@ int main(void)
printf("%s %s %s %s %s %s\n", s1, s2, s3, s4, s5, s6);
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select b'0010' , x'019ABcd'", ECPGt_EOIT,
- ECPGt_char,&(s1),(long)0,(long)1,(1)*sizeof(char),
+ ECPGt_char,&(s7),(long)0,(long)1,(1)*sizeof(char),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
- ECPGt_char,&(s2),(long)0,(long)1,(1)*sizeof(char),
+ ECPGt_char,&(s8),(long)0,(long)1,(1)*sizeof(char),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
#line 26 "strings.pgc"
- printf("%s %s\n", s1, s2);
+ printf("%s %s\n", s7, s8);
{ ECPGdisconnect(__LINE__, "CURRENT");}
#line 30 "strings.pgc"
diff --git a/src/interfaces/ecpg/test/expected/preproc-strings.stderr b/src/interfaces/ecpg/test/expected/preproc-strings.stderr
index 9f10ca0bf3..8364d6bb7f 100644
--- a/src/interfaces/ecpg/test/expected/preproc-strings.stderr
+++ b/src/interfaces/ecpg/test/expected/preproc-strings.stderr
@@ -44,8 +44,12 @@
[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ecpg_process_output on line 25: correctly got 1 tuples with 2 fields
[NO_PID]: sqlca: code: 0, state: 00000
+[NO_PID]: ecpg_store_result on line 25: allocating memory for 1 tuples
+[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ecpg_get_data on line 25: RESULT: 0010 offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
+[NO_PID]: ecpg_store_result on line 25: allocating memory for 1 tuples
+[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ecpg_get_data on line 25: RESULT: 0000000110011010101111001101 offset: -1; array: no
[NO_PID]: sqlca: code: 0, state: 00000
[NO_PID]: ecpg_finish: connection ecpg1_regression closed
diff --git a/src/interfaces/ecpg/test/preproc/strings.h b/src/interfaces/ecpg/test/preproc/strings.h
index 07c04f9103..edb5be5339 100644
--- a/src/interfaces/ecpg/test/preproc/strings.h
+++ b/src/interfaces/ecpg/test/preproc/strings.h
@@ -3,4 +3,6 @@ char *s1,
*s3,
*s4,
*s5,
- *s6;
+ *s6,
+ *s7,
+ *s8;
diff --git a/src/interfaces/ecpg/test/preproc/strings.pgc b/src/interfaces/ecpg/test/preproc/strings.pgc
index ab7eef6896..f3b253eb6d 100644
--- a/src/interfaces/ecpg/test/preproc/strings.pgc
+++ b/src/interfaces/ecpg/test/preproc/strings.pgc
@@ -23,9 +23,9 @@ int main(void)
printf("%s %s %s %s %s %s\n", s1, s2, s3, s4, s5, s6);
exec sql select b'0010', X'019ABcd'
- into :s1, :s2;
+ into :s7, :s8;
- printf("%s %s\n", s1, s2);
+ printf("%s %s\n", s7, s8);
exec sql disconnect;
return 0;