You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2012/05/21 19:58:24 UTC
svn commit: r1341130 -
/subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c
Author: rhuijben
Date: Mon May 21 17:58:24 2012
New Revision: 1341130
URL: http://svn.apache.org/viewvc?rev=1341130&view=rev
Log:
* subversion/tests/libsvn_wc/wc-queries-test.c
(test_query_expectations): Use a different method to detect
SQLITE_OMIT_EXPLAIN compilation option of Sqlite.
Modified:
subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c
Modified: subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1341130&r1=1341129&r2=1341130&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c Mon May 21 17:58:24 2012
@@ -381,11 +381,44 @@ test_query_expectations(apr_pool_t *scra
sqlite3 *sdb;
int i;
apr_pool_t *iterpool = svn_pool_create(scratch_pool);
- svn_boolean_t skipped_all = TRUE;
svn_error_t *warnings = NULL;
SVN_ERR(create_memory_db(&sdb, scratch_pool));
+ /* Sqlite has an SQLITE_OMIT_EXPLAIN compilation flag. In this case the
+ 'EXPLAIN QUERY PLAN' option is currently just ignored and the query
+ evaluated (status at Sqlite 3.7.12).
+
+ Detect this case, and skip this test */
+ {
+ sqlite3_stmt *stmt;
+ int r;
+ r = sqlite3_prepare(sdb, "EXPLAIN QUERY PLAN SELECT 101010101",
+ -1, &stmt, NULL);
+
+ if (r != SQLITE_OK)
+ {
+ SQLITE_ERR(sqlite3_close(sdb));
+ return svn_error_create(SVN_ERR_TEST_SKIPPED, warnings,
+ "Sqlite doesn't support EXPLAIN QUERY PLAN");
+ }
+
+ if (sqlite3_step(stmt) == SQLITE_ROW)
+ {
+ if (sqlite3_column_count(stmt) == 1
+ && sqlite3_column_int(stmt, 0) == 101010101)
+ {
+ SQLITE_ERR(sqlite3_reset(stmt));
+ SQLITE_ERR(sqlite3_finalize(stmt));
+ SQLITE_ERR(sqlite3_close(sdb));
+ return svn_error_create(SVN_ERR_TEST_SKIPPED, warnings,
+ "Sqlite doesn't support EXPLAIN QUERY PLAN");
+ }
+ }
+ SQLITE_ERR(sqlite3_reset(stmt));
+ SQLITE_ERR(sqlite3_finalize(stmt));
+ }
+
for (i=0; i < STMT_SCHEMA_FIRST; i++)
{
sqlite3_stmt *stmt;
@@ -417,8 +450,6 @@ test_query_expectations(apr_pool_t *scra
if (r != SQLITE_OK)
continue; /* EXPLAIN not enabled or doesn't support this query */
- skipped_all = FALSE;
-
while (SQLITE_ROW == (r = sqlite3_step(stmt)))
{
/*int iSelectid;
@@ -492,9 +523,6 @@ test_query_expectations(apr_pool_t *scra
}
SQLITE_ERR(sqlite3_close(sdb)); /* Close the DB if ok; otherwise leaked */
- if (skipped_all)
- return svn_error_create(SVN_ERR_TEST_SKIPPED, warnings, "Sqlite doesn't support EXPLAIN QUERY PLAN");
-
return warnings;
}