- select count (*) from (select * from medium) stupid_sql_standard;
- */
- ds_init_cstr (&query,
- "BEGIN READ ONLY ISOLATION LEVEL SERIALIZABLE; "
- "DECLARE pspp BINARY CURSOR FOR ");
-
- ds_put_substring (&query, info->sql.ss);
-
- qres = PQexec (r->conn, ds_cstr (&query));
- ds_destroy (&query);
- if ( PQresultStatus (qres) != PGRES_COMMAND_OK )
+ Versions before 9.1 don't have the REPEATABLE READ isolation level.
+ However according to <a12321aabb@gmail.com> if the server is in the
+ "hot standby" mode then SERIALIZABLE won't work.
+ */
+ char *query = xasprintf (
+ "BEGIN READ ONLY ISOLATION LEVEL %s; "
+ "DECLARE pspp BINARY CURSOR FOR %s",
+ (version < 90100) ? "SERIALIZABLE" : "REPEATABLE READ",
+ info->sql);
+ qres = PQexec (r->conn, query);
+ free (query);
+
+ if (PQresultStatus (qres) != PGRES_COMMAND_OK)