From 5ab642fdf1a75d29e0b78e1430550e0d190d67fe Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 10 Mar 2001 23:12:28 +0000
Subject: [PATCH] Provide a hack to let initialization happen on platforms for
 which psqlodbc.c's constructor-making techniques do not work.

---
 src/interfaces/odbc/environ.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/interfaces/odbc/environ.c b/src/interfaces/odbc/environ.c
index 080a8026d5e..6099ba4d100 100644
--- a/src/interfaces/odbc/environ.c
+++ b/src/interfaces/odbc/environ.c
@@ -15,19 +15,31 @@
 
 #include "environ.h"
 #include "connection.h"
+#include "dlg_specific.h"
 #include "statement.h"
 #include <stdlib.h>
 #include <string.h>
 
+extern GLOBAL_VALUES globals;
+
 /* The one instance of the handles */
 ConnectionClass *conns[MAX_CONNECTIONS];
 
 
 RETCODE SQL_API SQLAllocEnv(HENV FAR *phenv)
 {
-static char *func = "SQLAllocEnv";
-
-mylog("**** in SQLAllocEnv ** \n");
+    static char *func = "SQLAllocEnv";
+
+	mylog("**** in SQLAllocEnv ** \n");
+
+	/*
+	 * Hack for systems on which none of the constructor-making techniques
+	 * in psqlodbc.c work: if globals appears not to have been initialized,
+	 * then cause it to be initialized.  Since this should be the first
+	 * function called in this shared library, doing it here should work.
+	 */
+	if (globals.socket_buffersize <= 0)
+		getGlobalDefaults(DBMS_NAME, ODBCINST_INI, FALSE);
 
 	*phenv = (HENV) EN_Constructor();
 	if ( ! *phenv) {
-- 
GitLab