# HG changeset patch # User jbe # Date 1361473288 -3600 # Node ID 2ea60e88265ae26e006e8c61731fe3859d788d7e # Parent 978950dd9e323e7cad321c30b99f613dc570889f Compatibility for PostgreSQL 8.4 in lf_update.c diff -r 978950dd9e32 -r 2ea60e88265a lf_update.c --- a/lf_update.c Thu Feb 21 18:03:15 2013 +0100 +++ b/lf_update.c Thu Feb 21 20:01:28 2013 +0100 @@ -3,6 +3,26 @@ #include #include +static char *escapeLiteral(PGconn *conn, const char *str, size_t len) { + // provides compatibility for PostgreSQL versions prior 9.0 + // in future: return PQescapeLiteral(conn, str, len); + char *res; + size_t res_len; + res = malloc(2*len+3); + res[0] = '\''; + res_len = PQescapeStringConn(conn, res+1, str, len, NULL); + res[res_len+1] = '\''; + res[res_len+2] = 0; + return res; +} + +static void freemem(void *ptr) { + // to be used for "escapeLiteral" function + // provides compatibility for PostgreSQL versions prior 9.0 + // in future: PQfreemem(ptr); + free(ptr); +} + int main(int argc, char **argv) { // variable declarations: @@ -117,7 +137,7 @@ PGresult *res2, *old_res2; int j; issue_id = PQgetvalue(res, i, 0); - escaped_issue_id = PQescapeLiteral(db, issue_id, strlen(issue_id)); + escaped_issue_id = escapeLiteral(db, issue_id, strlen(issue_id)); old_res2 = NULL; for (j=0; ; j++) { if (j >= 20) { // safety to avoid endless loops @@ -138,15 +158,15 @@ } else { char *persist, *escaped_persist, *cmd; persist = PQgetvalue(old_res2, 0, 0); - escaped_persist = PQescapeLiteral(db, persist, strlen(persist)); + escaped_persist = escapeLiteral(db, persist, strlen(persist)); if (asprintf(&cmd, "SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT \"check_issue\"(%s, %s::\"check_issue_persistence\")", escaped_issue_id, escaped_persist) < 0) { - PQfreemem(escaped_persist); + freemem(escaped_persist); fprintf(stderr, "Could not prepare query string in memory.\n"); err = 1; PQclear(old_res2); break; } - PQfreemem(escaped_persist); + freemem(escaped_persist); res2 = PQexec(db, cmd); free(cmd); PQclear(old_res2); @@ -172,7 +192,7 @@ } } } - PQfreemem(escaped_issue_id); + freemem(escaped_issue_id); } PQclear(res); }