|
From: gustafn <gne...@us...> - 2011-07-05 18:45:37
|
Update of /cvsroot/aolserver/nspostgres
In directory vz-cvs-4.sog:/tmp/cvs-serv25890
Modified Files:
Makefile nspostgres.c
Log Message:
- using SQL escape string syntax E'...' when needed (required in PostgreSql 9.1)
- minor cleanup to get rid of compilation warnings
- adding -lnsdb to the libraries in the Makefile
Index: Makefile
===================================================================
RCS file: /cvsroot/aolserver/nspostgres/Makefile,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** Makefile 12 Jun 2007 15:17:45 -0000 1.21
--- Makefile 5 Jul 2011 18:45:35 -0000 1.22
***************
*** 93,97 ****
# Libraries required by this module
#
! MODLIBS += -L$(PGLIB) -lpq
#
--- 93,97 ----
# Libraries required by this module
#
! MODLIBS += -L$(PGLIB) -lpq -lnsdb
#
Index: nspostgres.c
===================================================================
RCS file: /cvsroot/aolserver/nspostgres/nspostgres.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** nspostgres.c 25 Feb 2007 09:45:32 -0000 1.15
--- nspostgres.c 5 Jul 2011 18:45:35 -0000 1.16
***************
*** 909,913 ****
n = byte_len;
for (i=0, j=0; n > 0; i += 4, j += 3, n -= 3) {
! decode3(&data_column[i], &buf[j], n);
}
buf[byte_len] = '\0';
--- 909,913 ----
n = byte_len;
for (i=0, j=0; n > 0; i += 4, j += 3, n -= 3) {
! decode3((unsigned char*)&data_column[i], &buf[j], n);
}
buf[byte_len] = '\0';
***************
*** 981,985 ****
value_len -= segment_len;
for (i = 0, j = 0; i < segment_len; i += 3, j+=4) {
! encode3(&value_ptr[i], &out_buf[j]);
}
out_buf[j] = '\0';
--- 981,985 ----
value_len -= segment_len;
for (i = 0, j = 0; i < segment_len; i += 3, j+=4) {
! encode3((unsigned char *)&value_ptr[i], &out_buf[j]);
}
out_buf[j] = '\0';
***************
*** 1047,1051 ****
while (readlen > 0) {
for (i = 0, j = 0; i < readlen; i += 3, j+=4) {
! encode3(&in_buf[i], &out_buf[j]);
}
out_buf[j] = '\0';
--- 1047,1051 ----
while (readlen > 0) {
for (i = 0, j = 0; i < readlen; i += 3, j+=4) {
! encode3((unsigned char *)&in_buf[i], &out_buf[j]);
}
out_buf[j] = '\0';
***************
*** 1182,1186 ****
n = byte_len;
for (i=0, j=0; n > 0; i += 4, j += 3, n -= 3) {
! decode3(&data_column[i], &buf[j], n);
}
--- 1182,1186 ----
n = byte_len;
for (i=0, j=0; n > 0; i += 4, j += 3, n -= 3) {
! decode3((unsigned char *)&data_column[i], &buf[j], n);
}
***************
*** 1362,1366 ****
string_list_elt_t *felt, *fhead=0, *ftail=0;
int current_string_length = 0;
- int first_bind = 0;
fragbuf = (char*)Ns_Malloc((strlen(input)+1)*sizeof(char));
--- 1362,1365 ----
***************
*** 1478,1482 ****
char *value = NULL;
char *p;
- int value_frag_len = 0;
if (argc < 4 || (!STREQ("-bind", argv[3]) && (argc != 4)) ||
--- 1477,1480 ----
***************
*** 1564,1567 ****
--- 1562,1577 ----
Ns_DStringAppend(&ds, "NULL");
} else {
+ int needEscapeStringSyntax = 0;
+
+ /*
+ * Determine, if we need the SQL escape string Syntax E'...'
+ */
+ for (p = value; *p; p++) {
+ if (*p == '\\') {
+ needEscapeStringSyntax = 1;
+ break;
+ }
+ }
+
/*
* DRB: We really only need to quote strings, but there is one benefit
***************
*** 1572,1576 ****
* still used when appropriate.
*/
! Ns_DStringAppend(&ds, "'");
/*
--- 1582,1586 ----
* still used when appropriate.
*/
! Ns_DStringAppend(&ds, needEscapeStringSyntax ? "E'" : "'");
/*
***************
*** 1598,1602 ****
}
! Ns_DStringAppend(&ds, "'");
}
var_p = var_p->next;
--- 1608,1612 ----
}
! Ns_DStringAppend(&ds, "'");
}
var_p = var_p->next;
|