X-Git-Url: http://sigaev.ru/git/gitweb.cgi?p=ftsbench.git;a=blobdiff_plain;f=pgdriver.c;fp=pgdriver.c;h=0f01827f77bd236ddd197422a964eb447726b144;hp=0c4c59d62e7972b4c2a80f9560fc05e2840e11b7;hb=7449f76ea4361b57d6a875a566438fa37c330947;hpb=1e58e6abeab12d724c3d3a8a67394a38324767a3 diff --git a/pgdriver.c b/pgdriver.c index 0c4c59d..0f01827 100644 --- a/pgdriver.c +++ b/pgdriver.c @@ -194,7 +194,6 @@ checkEmptyQuery(ftsPG *db, PGresult *res) { static void execQuery(ftsDB* adb, char ** words, int flags) { ftsPG *db = (ftsPG*)adb; - const char *paramValues[1]; int i = 0; PGresult *res; @@ -224,25 +223,25 @@ execQuery(ftsDB* adb, char ** words, int flags) { if ( i!= 0 ) sb_add(&db->b, (db->flags & FLG_OR) ? " | '" : " & '", 4); else - sb_add(&db->b, "'", 1); + sb_addchar(&db->b, '\''); while( *ptr ) { if (*ptr == '\'') - sb_add(&db->b, "'", 1); - sb_add(&db->b, ptr, 1); + sb_addchar(&db->b, '\''); + sb_addchar(&db->b, *ptr); ptr++; } - sb_add(&db->b, "'", 1); + sb_addchar(&db->b, '\''); i++; words++; } - paramValues[0] = db->b.str; + i = 1; res = PQexecPrepared( db->conn, "search_ftsbench", - 1, paramValues, - NULL, NULL, 0); + 1, (const char**)&(db->b.str), + &(db->b.strlen), &i, 0); if (PQresultStatus(res) != PGRES_TUPLES_OK) { /* skip error ' all words are a stop word' for GIN index -