diff -c psqlodbc.orig/connection.c psqlodbc/connection.c *** psqlodbc.orig/connection.c 2006-06-06 10:36:53.756768000 +0200 --- psqlodbc/connection.c 2006-06-09 14:35:00.594874796 +0200 *************** *** 2320,2326 **** { if (CC_is_in_error_trans(self)) snprintf(cmd, sizeof(cmd), "ROLLBACK TO %s;", per_query_svp); ! snprintf(cmd, sizeof(cmd), "%sRELEASE %s", cmd, per_query_svp); } else if (CC_is_in_error_trans(self)) strcpy(cmd, "ROLLBACK"); --- 2320,2326 ---- { if (CC_is_in_error_trans(self)) snprintf(cmd, sizeof(cmd), "ROLLBACK TO %s;", per_query_svp); ! snprintf_add(cmd, strlen(cmd), sizeof(cmd), "RELEASE %s", per_query_svp); } else if (CC_is_in_error_trans(self)) strcpy(cmd, "ROLLBACK"); diff -c psqlodbc.orig/results.c psqlodbc/results.c *** psqlodbc.orig/results.c 2006-06-06 10:37:10.131120000 +0200 --- psqlodbc/results.c 2006-06-09 14:36:52.875714241 +0200 *************** *** 2977,2984 **** Int4 slen; /*snprintf(selstr, len, "%s where \"%s\" = %u", stmt->load_statement, bestitem, *oid);*/ snprintf(selstr, len, "%s where ", stmt->load_statement); ! slen = strlen(selstr); ! snprintf(selstr + slen, len - slen, bestqual, *oidint); } else { --- 2977,2983 ---- Int4 slen; /*snprintf(selstr, len, "%s where \"%s\" = %u", stmt->load_statement, bestitem, *oid);*/ snprintf(selstr, len, "%s where ", stmt->load_statement); ! snprintf_add(selstr, strlen(selstr), len, bestqual, *oidint); } else {