Hi!
We're trying to upgrade from WiredTiger from 3.1.0 to 3.2.1 and found that 'items iterated' join cursor statistics is different in these releases.
To demonstrate I slightly modified ex_schema.c example adding function to print join cursor statistics (copied from ex_stat.c).
diff --git a/examples/c/ex_schema.c b/examples/c/ex_schema.c
index 0175007..812ff2b 100644
--- a/examples/c/ex_schema.c
+++ b/examples/c/ex_schema.c
@@ -47,6 +47,22 @@ static POP_RECORD pop_data[] = {{"AU", 1900, 4000000}, {"AU", 1950, 8267337},
{"USA", 1950, 150697361}, {"USA", 2000, 301279593}, {"", 0, 0}};
/*! [schema declaration] */
+/*! [statistics display function] */
+void
+print_cursor(WT_CURSOR *cursor)
+{
+ const char *desc, *pvalue;
+ int64_t value;
+ int ret;
+
+ while ((ret = cursor->next(cursor)) == 0) {
+ error_check(cursor->get_value(cursor, &desc, &pvalue, &value));
+ if (value != 0)
+ printf("%s=%s\n", desc, pvalue);
+ }
+ scan_end_check(ret == WT_NOTFOUND);
+}
+
int
main(int argc, char *argv[])
{
@@ -309,6 +325,7 @@ main(int argc, char *argv[])
/*! [Statistics cursor join cursor] */
error_check(session->open_cursor(session, "statistics:join", join_cursor, NULL, &stat_cursor));
+ print_cursor(stat_cursor);
/*! [Statistics cursor join cursor] */
error_check(stat_cursor->close(stat_cursor));
On 3.1.0 I got the following output:
$ ./ex_schema ... ID 2: country AU, year 1950, population 8267338 ID 3: country AU, year 2000, population 19053187 join: index:poptable:country: accesses to the main table=2 join: index:poptable:country: checks that conditions of membership are satisfied=4 join: index:poptable:country: items iterated=4 ...
On 3.2.1:
$ ./ex_schema ... ID 2: country AU, year 1950, population 8267338 ID 3: country AU, year 2000, population 19053187 join: index:poptable:country: accesses to the main table=2 join: index:poptable:country: checks that conditions of membership are satisfied=12 join: index:poptable:country: items iterated=12 ...
Note the difference in "items iterated": 4 vs 12.
This statistics is important for us since it's used to optimize subsequent queries.
git bisect points to this commit made in WT-4946
Thanks!