aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/test/expected/thread-alloc.c
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2017-08-26 12:57:21 +0200
committerMichael Meskes <meskes@postgresql.org>2017-09-14 01:17:03 +0200
commit839ee1811d053da4cdd0a44aea8fe7b011284be2 (patch)
treef39daa764fb960848af4668e2bef1d573453720c /src/interfaces/ecpg/test/expected/thread-alloc.c
parente5c8d43abde8cbb4b7fbbb5a215e497f11bf6fe6 (diff)
downloadpostgresql-839ee1811d053da4cdd0a44aea8fe7b011284be2.tar.gz
postgresql-839ee1811d053da4cdd0a44aea8fe7b011284be2.zip
Make setlocale in ECPG test cases thread aware on Windows.
Fix threaded test cases on Windows not to crash in setlocale() which can be global or local to a thread on Windows. Author: Christian Ullrich
Diffstat (limited to 'src/interfaces/ecpg/test/expected/thread-alloc.c')
-rw-r--r--src/interfaces/ecpg/test/expected/thread-alloc.c39
1 files changed, 22 insertions, 17 deletions
diff --git a/src/interfaces/ecpg/test/expected/thread-alloc.c b/src/interfaces/ecpg/test/expected/thread-alloc.c
index 49f1cd19c4f..1312580f578 100644
--- a/src/interfaces/ecpg/test/expected/thread-alloc.c
+++ b/src/interfaces/ecpg/test/expected/thread-alloc.c
@@ -22,6 +22,7 @@ main(void)
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <process.h>
+#include <locale.h>
#else
#include <pthread.h>
#endif
@@ -99,7 +100,7 @@ struct sqlca_t *ECPGget_sqlca(void);
#endif
-#line 24 "alloc.pgc"
+#line 25 "alloc.pgc"
#line 1 "regression.h"
@@ -109,14 +110,14 @@ struct sqlca_t *ECPGget_sqlca(void);
-#line 25 "alloc.pgc"
+#line 26 "alloc.pgc"
/* exec sql whenever sqlerror sqlprint ; */
-#line 27 "alloc.pgc"
+#line 28 "alloc.pgc"
/* exec sql whenever not found sqlprint ; */
-#line 28 "alloc.pgc"
+#line 29 "alloc.pgc"
#ifdef WIN32
@@ -127,59 +128,63 @@ static void* fn(void* arg)
{
int i;
+#ifdef WIN32
+ _configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
+#endif
+
/* exec sql begin declare section */
-#line 39 "alloc.pgc"
+#line 44 "alloc.pgc"
int value ;
-#line 40 "alloc.pgc"
+#line 45 "alloc.pgc"
char name [ 100 ] ;
-#line 41 "alloc.pgc"
+#line 46 "alloc.pgc"
char ** r = NULL ;
/* exec sql end declare section */
-#line 42 "alloc.pgc"
+#line 47 "alloc.pgc"
value = (long)arg;
sprintf(name, "Connection: %d", value);
{ ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , name, 0);
-#line 47 "alloc.pgc"
+#line 52 "alloc.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 47 "alloc.pgc"
+#line 52 "alloc.pgc"
{ ECPGsetcommit(__LINE__, "on", NULL);
-#line 48 "alloc.pgc"
+#line 53 "alloc.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 48 "alloc.pgc"
+#line 53 "alloc.pgc"
for (i = 1; i <= REPEATS; ++i)
{
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select relname from pg_class where relname = 'pg_class'", ECPGt_EOIT,
ECPGt_char,&(r),(long)0,(long)0,(1)*sizeof(char),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
-#line 51 "alloc.pgc"
+#line 56 "alloc.pgc"
if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
-#line 51 "alloc.pgc"
+#line 56 "alloc.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 51 "alloc.pgc"
+#line 56 "alloc.pgc"
free(r);
r = NULL;
}
{ ECPGdisconnect(__LINE__, name);
-#line 55 "alloc.pgc"
+#line 60 "alloc.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 55 "alloc.pgc"
+#line 60 "alloc.pgc"
return 0;