--- ./backends/pgsql/pgsql_basic.c.orig	2011-07-05 16:46:43.000000000 +0800
+++ ./backends/pgsql/pgsql_basic.c	2011-07-05 18:09:09.000000000 +0800
@@ -76,6 +76,7 @@
 	conn->infolen = len;
 	conn->timeout = 0;
 	conn->ssl = 0;
+	conn->esctype = ODBX_OPT_ESCAPT_TYPE_STRING;
 
 	return ODBX_ERR_SUCCESS;
 }
@@ -185,6 +186,9 @@
 		case ODBX_OPT_COMPRESS:
 			*(int*) value = ODBX_DISABLE;
 			break;
+		case ODBX_OPT_ESCAPT_TYPE:
+			*(int *)value = ((struct pgconn*)handle->aux)->esctype;
+			break;
 		default:
 			return -ODBX_ERR_OPTION;
 	}
@@ -227,7 +231,10 @@
 		case ODBX_OPT_COMPRESS:
 
 			return -ODBX_ERR_OPTWR;
-
+		case ODBX_OPT_ESCAPT_TYPE:
+			((struct pgconn*)handle->aux)->esctype= *(unsigned int *)value;
+			return ODBX_ERR_SUCCESS;
+			
 		default:
 
 			return -ODBX_ERR_OPTION;
@@ -269,18 +276,38 @@
 		return -ODBX_ERR_SIZE;
 	}
 
+	if(((struct pgconn *)handle->aux)->esctype==ODBX_OPT_ESCAPT_TYPE_BYTEA){
+		unsigned char *tmp=NULL;
+		size_t len;
+#ifdef HAVE_PQ_ESCAPE_BYTEA_CONN
+		tmp = PQescapeByteaConn ( (PGconn*) handle->generic,from,fromlen,&len);
+		if(!tmp)
+			return -ODBX_ERR_BACKEND;
+		memcpy(to,tmp,len);
+		*tolen=len;
+		free(tmp);
+#else
+		tmp = PQescapeBytea ( from,fromlen,&len);
+		if(!tmp)
+			return -ODBX_ERR_BACKEND;
+		memcpy(to,tmp,len);
+		*tolen=len;
+		free(tmp);
+#endif
+	}else{
 #ifdef HAVE_PQ_ESCAPE_STRING_CONN
-	int err;
-	*tolen = PQescapeStringConn( (PGconn*) handle->generic, to, from, fromlen, &err );
-
-	if( err != 0 )
-	{
-		((struct pgconn* ) handle->aux)->errtype = 1;
-		return -ODBX_ERR_BACKEND;
-	}
+		int err;
+		*tolen = PQescapeStringConn( (PGconn*) handle->generic, to, from, fromlen, &err );
+	
+		if( err != 0 )
+		{
+			((struct pgconn* ) handle->aux)->errtype = 1;
+			return -ODBX_ERR_BACKEND;
+		}
 #else
-	*tolen = PQescapeString( to, from, fromlen );
+		*tolen = PQescapeString( to, from, fromlen );
 #endif
+	}
 
 	return ODBX_ERR_SUCCESS;
 }
--- ./backends/pgsql/pgsqlbackend.h.orig	2011-07-05 16:53:50.000000000 +0800
+++ ./backends/pgsql/pgsqlbackend.h	2011-07-05 16:54:18.000000000 +0800
@@ -71,6 +71,7 @@
 	int infolen;
 	int errtype;
 	int ssl;
+	int esctype;
 	unsigned int timeout;
 };
 
--- ./lib/opendbx/api.h.orig	2011-07-05 16:47:21.000000000 +0800
+++ ./lib/opendbx/api.h	2011-07-05 17:37:44.000000000 +0800
@@ -223,8 +223,11 @@
 #define ODBX_OPT_COMPRESS   ODBX_OPT_COMPRESS
 	ODBX_OPT_MODE = 0x0023,
 #define ODBX_OPT_MODE   ODBX_OPT_MODE
-	ODBX_OPT_CONNECT_TIMEOUT = 0x0024
+	ODBX_OPT_CONNECT_TIMEOUT = 0x0024,
 #define ODBX_OPT_CONNECT_TIMEOUT   ODBX_OPT_CONNECT_TIMEOUT
+	ODBX_OPT_ESCAPT_TYPE = 0x0025,
+#define ODBX_OPT_ESCAPT_TYPE_STRING	1
+#define ODBX_OPT_ESCAPT_TYPE_BYTEA	2
 };
 
 
--- ./configure.ac.orig	2011-07-05 17:10:28.000000000 +0800
+++ ./configure.ac	2011-07-05 17:17:39.000000000 +0800
@@ -11,7 +11,7 @@
 AM_GNU_GETTEXT([external])
 AM_GNU_GETTEXT_VERSION([0.17])
 AM_ICONV
-
+AC_PROG_LIBTOOL
 
 # Library setup
 APIVERSION="3:0:2"
@@ -45,7 +45,7 @@
 
 
 # Libtool settings
-LT_INIT([win32-dll])
+# LT_INIT([win32-dll])
 
 
 # Checks for programs.
@@ -295,6 +295,10 @@
 				[AC_DEFINE([HAVE_PQ_ESCAPE_STRING_CONN], 1, [Define to 1 if you have PQescapeStringConn])]
 			)
 			AC_CHECK_LIB(
+				[$LIBPGSQL], [PQescapeByteaConn],
+				[AC_DEFINE([HAVE_PQ_ESCAPE_BYTEA_CONN], 1, [Define to 1 if you have PQescapeByteaConn])]
+			)
+			AC_CHECK_LIB(
 				[ws2_32], [main],
 				[AC_DEFINE([HAVE_SELECT], 1, [Define to 1 if you have ws2_32.dll]) LIBPGSQL="$LIBPGSQL -lws2_32"]
 			)
